Author: sebb
Date: Fri Feb  4 18:11:03 2011
New Revision: 1067248

URL: http://svn.apache.org/viewvc?rev=1067248&view=rev
Log:
Close window

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java?rev=1067248&r1=1067247&r2=1067248&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
 Fri Feb  4 18:11:03 2011
@@ -57,10 +57,13 @@ public class RemoteJMeterEngineImpl exte
             System.out.println("Using local port: "+DEFAULT_LOCAL_PORT);
         }
     }
+
     // Should we create our own copy of the RMI registry?
     private static final boolean createServer =
         JMeterUtils.getPropDefault("server.rmi.create", true); // $NON-NLS-1$
 
+    private final Object LOCK = new Object();
+
     private RemoteJMeterEngineImpl(int port) throws RemoteException {
         super(port); // Create this object using the specified port (0 means 
anonymous)
         System.out.println("Created remote object: 
"+this.getRef().remoteToString());
@@ -122,13 +125,15 @@ public class RemoteJMeterEngineImpl exte
      */
     public void configure(HashTree testTree, String host, File jmxBase) throws 
RemoteException {
         log.info("Creating JMeter engine on host "+host+" base '"+jmxBase+"'");
-        if (backingEngine != null && backingEngine.isActive()) {
-            log.warn("Engine is busy - cannot create JMeter engine");
-            throw new IllegalStateException("Engine is busy - please try 
later");
-        }
-        ownerThread = Thread.currentThread();
-        backingEngine = new StandardJMeterEngine(host);
-        backingEngine.configure(testTree);
+        synchronized(LOCK) { // close window where another remote client might 
jump in
+            if (backingEngine != null && backingEngine.isActive()) {
+                log.warn("Engine is busy - cannot create JMeter engine");
+                throw new IllegalStateException("Engine is busy - please try 
later");
+            }
+            ownerThread = Thread.currentThread();
+            backingEngine = new StandardJMeterEngine(host);
+            backingEngine.configure(testTree); // sets active = true
+        }
         FileServer.getFileServer().setBase(jmxBase);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to