You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/12/01 02:51:03 UTC

svn commit: r350097 - /jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java

Author: sebb
Date: Wed Nov 30 17:50:59 2005
New Revision: 350097

URL: http://svn.apache.org/viewcvs?rev=350097&view=rev
Log:
Bug 37705 - reset counter at end

Modified:
    jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java

Modified: jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java?rev=350097&r1=350096&r2=350097&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java Wed Nov 30 17:50:59 2005
@@ -34,15 +34,16 @@
  * 
  */
 public class SyncTimer extends AbstractTestElement implements Timer, Serializable, TestBean {
-	private static final long serialVersionUID = 1;
+	private static final long serialVersionUID = 2;
 
-	static Logger log = LoggingManager.getLoggerForClass();
+	private static final Logger log = LoggingManager.getLoggerForClass();
 
-	int[] timerCounter = new int[] { 0 };
+    // Must be an Object so it will be shared between threads
+	private int[] timerCounter = new int[] { 0 };
 
-	transient Object sync = new Object();
+	private transient Object sync = new Object();
 
-	int groupSize;
+	private int groupSize;
 
 	/**
 	 * @return Returns the numThreads.
@@ -67,23 +68,28 @@
 	public long delay() {
 		synchronized (sync) {
 			timerCounter[0]++;
-			if ((getGroupSize() == 0 && timerCounter[0] >= JMeterContextService.getNumberOfThreads())
-					|| (getGroupSize() > 0 && timerCounter[0] >= getGroupSize())) {
-				timerCounter[0] = 0;
+			final int groupSz = getGroupSize();
+            final int count = timerCounter[0];
+            if (
+                (groupSz == 0 && count >= JMeterContextService.getNumberOfThreads())
+				||
+                (groupSz > 0 && count >= groupSz)
+                ) {
 				sync.notifyAll();
 			} else {
 				try {
 					sync.wait();
 				} catch (InterruptedException e) {
-					e.printStackTrace();
+					log.warn(e.getLocalizedMessage());
 				}
 			}
+            timerCounter[0]=0; // Reset for next time
 		}
 		return 0;
 	}
 
 	/**
-	 * We have to controll the cloning process because we need some cross-thread
+	 * We have to control the cloning process because we need some cross-thread
 	 * communication if our synctimers are to be able to determine when to block
 	 * and when to release.
 	 */



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org