Bug 123840 Incorrect use of static fields in NEvaluator and FilterPassController
Data Engine classes org.eclipse.birt.data.engine.script.NEvaluator and FilterPassController (used for top-n and bottom-n filter process) use static class fields to store proessing data. This is not multi-thread safe. If there are concurrent requests running in the same JVM (even if they use different instances of DataEngine), data corruption will occur since multiple requests may get/set the static fields at the same time. These classes should keep all per-request data in instance fields. Each report query need to have its own instance.
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/script/NEvaluator.java
*/
	public static NEvaluator getInstance( String instanceName )
	{
		if ( instance == null
				|| ( currentInstance == null || !currentInstance.equalsIgnoreCase( instanceName ) ) )
		{
			if ( TOP_INSTANCE.equalsIgnoreCase( instanceName ) )
				instance = new TopNEvaluator( );
			else if ( BOTTOM_INSTANCE.equalsIgnoreCase( instanceName ) )
				instance = new BottomNEvaluator( );
			else
				throw new IllegalArgumentException( );
		}
		return instance;
	}
	
	/**
	 * Evaluate the given value
	 * @param value
	 * @param n
	 * @return
	 * @throws DataException
	 */
	public boolean evaluate(Object value, Object n, boolean calculatePercent) throws DataException
	{
		if( FilterPassController.getForceReset() )
		{
			doReset();
			FilterPassController.setForceReset( false );
		}