This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new da93b6e857 fix: ensure JMeter still calls recoverRunningVersion for 
ThreadGroups as it was doing in 5.5
da93b6e857 is described below

commit da93b6e857d9ff2ca2aa4b40678321a81b1d8f36
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Thu May 25 15:59:50 2023 +0300

    fix: ensure JMeter still calls recoverRunningVersion for ThreadGroups as it 
was doing in 5.5
    
    In fact, ThreadGroup elements are cloned for each thread, so they might need
    recoverRunningVersion.
    
    See https://github.com/apache/jmeter/pull/5920
---
 .../java/org/apache/jmeter/testelement/AbstractTestElement.java     | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java 
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
index 4d1e70e56b..cdff85ef0f 100644
--- 
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
+++ 
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
@@ -67,6 +67,10 @@ public abstract class AbstractTestElement implements 
TestElement, Serializable,
      */
     private transient final ReadWriteLock lock =
             this instanceof NoThreadClone
+                    // Note: thread groups are cloned for every thread, 
however, JMeterContext contains a reference
+                    // to a non-cloned ThreadGroup instance.
+                    // That causes jmeterContext.getThreadGroup().getName() to 
access the same ThreadGroup instance
+                    // even though each thread has its own copy, so we use 
read-write lock approach for ThreadGroups
                     || this instanceof AbstractThreadGroup
                     ? new ReentrantReadWriteLock()
                     : null;
@@ -645,7 +649,7 @@ public abstract class AbstractTestElement implements 
TestElement, Serializable,
      */
     @Override
     public void recoverRunningVersion() {
-        if (lock != null) {
+        if (this instanceof NoThreadClone) {
             // The element is shared between threads, so there's nothing to 
recover
             // See https://github.com/apache/jmeter/issues/5875
             return;

Reply via email to