diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java index 8852f6332e4..9ca0f9a2f5e 100644 --- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java +++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java @@ -80,7 +80,16 @@ public class CacheManager extends ConfigTestElement implements TestStateListener public static final String MAX_SIZE = "maxSize"; // $NON-NLS-1$ //- - private transient InheritableThreadLocal> threadCache; + @SuppressWarnings("ThreadLocalUsage") // intentionally using InheritableThreadLocal for per-thread cache + private final transient InheritableThreadLocal> threadCache = + new InheritableThreadLocal>(){ + @Override + protected Cache initialValue() { + return Caffeine.newBuilder() + .maximumSize(getMaxSize()) + .build(); + } + }; private transient boolean useExpires; // Cached value @@ -602,15 +611,7 @@ public void clear(){ private void clearCache() { log.debug("Clear cache"); - // TODO: avoid re-creating the thread local every time, reset its contents instead - threadCache = new InheritableThreadLocal>(){ - @Override - protected Cache initialValue() { - return Caffeine.newBuilder() - .maximumSize(getMaxSize()) - .build(); - } - }; + threadCache.remove(); } /**