Author: milamber
Date: Sat Sep 17 15:03:52 2011
New Revision: 1171999
URL: http://svn.apache.org/viewvc?rev=1171999&view=rev
Log:
Bug 50032 - Fixed a new regression introduced by bug 50032 when Transaction
Controller is a child of If Controller
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/GenericController.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/GenericController.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/GenericController.java?rev=1171999&r1=1171998&r2=1171999&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/GenericController.java
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/GenericController.java
Sat Sep 17 15:03:52 2011
@@ -228,6 +228,7 @@ public class GenericController extends A
*
*/
protected void reInitializeSubController() {
+ boolean wasFlagSet =
getThreadContext().setIsReinitializingSubControllers();
try {
TestElement currentElement = getCurrentElement();
if (currentElement != null) {
@@ -240,6 +241,10 @@ public class GenericController extends A
}
}
} catch (NextIsNullException e) {
+ } finally {
+ if (wasFlagSet) {
+ getThreadContext().unsetIsReinitializingSubControllers();
+ }
}
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java?rev=1171999&r1=1171998&r2=1171999&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
Sat Sep 17 15:03:52 2011
@@ -192,7 +192,10 @@ public class TransactionController exten
// We must set res to null now, before sending the event
for the transaction,
// so that we can ignore that event in our sampleOccured
method
res = null;
- lnf.notifyListeners(event, pack.getSampleListeners());
+ // bug 50032
+ if (!getThreadContext().isReinitializingSubControllers()) {
+ lnf.notifyListeners(event, pack.getSampleListeners());
+ }
}
}
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java?rev=1171999&r1=1171998&r2=1171999&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
Sat Sep 17 15:03:52 2011
@@ -49,6 +49,8 @@ public class JMeterContext {
private byte[] readBuffer = null;
+ private boolean isReinitSubControllers = false;
+
JMeterContext() {
clear0();
}
@@ -66,6 +68,7 @@ public class JMeterContext {
threadNum = 0;
readBuffer = null;
thread = null;
+ isReinitSubControllers = false;
}
/**
@@ -169,4 +172,34 @@ public class JMeterContext {
public void setSamplingStarted(boolean b) {
samplingStarted = b;
}
+
+ /**
+ * Reset flag indicating listeners should not be notified since reinit of
sub
+ * controllers is being done. See bug 50032
+ */
+ public void unsetIsReinitializingSubControllers() {
+ if (isReinitSubControllers) {
+ isReinitSubControllers = false;
+ }
+ }
+
+ /**
+ * Set flag indicating listeners should not be notified since reinit of
sub
+ * controllers is being done. See bug 50032
+ * @return true if it is the first one to set
+ */
+ public boolean setIsReinitializingSubControllers() {
+ if (!isReinitSubControllers) {
+ isReinitSubControllers = true;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @return true if within reinit of Sub Controllers
+ */
+ public boolean isReinitializingSubControllers() {
+ return isReinitSubControllers;
+ }
}
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1171999&r1=1171998&r2=1171999&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Sep 17 15:03:52 2011
@@ -51,8 +51,6 @@ In particular, it can cause a NullPointe
<p>Once Only controller behaves correctly under a Thread Group or Loop
Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>
-<p>If Controller generates additional samples for children Transaction
Controller inside when condition is false.</p>
-
<p>If Controller may make that JMeter starts a infinite running when the If
condition is always
false from the first iteration.</p>
@@ -92,7 +90,7 @@ This can be overridden by setting the JM
<h3>Controllers</h3>
<ul>
-<li>If Controller - Fixed a regression introduce by bug 50032 (see bug 50618
too)</li>
+<li>If Controller - Fixed two regressions introduced by bug 50032 (see bug
50618 too)</li>
<li>If Controller - Catches a StackOverflowError when a condition returns
always false (after at least one iteration with return true) See bug 50618</li>
</ul>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]