Skip to content

Commit 2ec0db4

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

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

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

Lines changed: 14 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,23 @@ 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+
tempProperties.clear();
665+
}
666+
// Recover non-temporary properties
667+
for (JMeterProperty prop : propMap.values()) {
665668
prop.recoverRunningVersion(this);
666669
}
670+
} finally {
671+
writeUnlock();
667672
}
668-
emptyTemporary();
669673
}
670674

671675
/**

0 commit comments

Comments
 (0)