Skip to content

Commit 08e75ec

Browse files
committed
perf: replace isTemporary(property) check with removing all the temporary properties first
1 parent 92df9fe commit 08e75ec

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.io.Serializable;
2121
import java.util.ArrayList;
2222
import java.util.Collections;
23-
import java.util.Iterator;
2423
import java.util.LinkedHashMap;
2524
import java.util.LinkedHashSet;
2625
import java.util.List;
@@ -654,18 +653,29 @@ public void recoverRunningVersion() {
654653
// See https://github.com/apache/jmeter/issues/5875
655654
return;
656655
}
657-
Iterator<Map.Entry<String, JMeterProperty>> iter = propMap.entrySet().iterator();
658-
while (iter.hasNext()) {
659-
Map.Entry<String, JMeterProperty> entry = iter.next();
660-
JMeterProperty prop = entry.getValue();
661-
if (isTemporary(prop)) {
662-
iter.remove();
663-
clearTemporary(prop);
664-
} else {
656+
writeLock();
657+
try {
658+
Set<JMeterProperty> tempProperties = temporaryProperties;
659+
// Remove temporary properties first
660+
if (tempProperties != null) {
661+
for (JMeterProperty prop : tempProperties) {
662+
removeProperty(prop.getName());
663+
}
664+
}
665+
// Recover non-temporary properties
666+
for (JMeterProperty prop : propMap.values()) {
665667
prop.recoverRunningVersion(this);
666668
}
669+
// Clearing the temporary properties must happen after we recover all the other properties
670+
// The reason is that some of the properties might be MultiProperty which uses
671+
// testElement.temporaryProperties storage instead of tracking the temps on its own
672+
// TODO: move temp tracking to MultiProperty
673+
if (tempProperties != null) {
674+
tempProperties.clear();
675+
}
676+
} finally {
677+
writeUnlock();
667678
}
668-
emptyTemporary();
669679
}
670680

671681
/**

0 commit comments

Comments
 (0)