diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/WeakMap.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/WeakMap.java index 6c35ab3043..a441467bdb 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/WeakMap.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/WeakMap.java @@ -108,7 +108,6 @@ public interface WeakMap { @Override public synchronized V getOrCreate(K key, ValueSupplier supplier) { - if (!map.containsKey(key)) { map.put(key, supplier.get()); } diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/WeakMapSuppliers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/WeakMapSuppliers.java index 7571c03cf2..f7ff52f013 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/WeakMapSuppliers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/WeakMapSuppliers.java @@ -175,6 +175,15 @@ class WeakMapSuppliers { public void putIfAbsent(final K key, final V value) { map.putIfAbsent(key, value); } + + @Override + public V getOrCreate(K key, ValueSupplier supplier) { + if (!map.containsKey(key)) { + map.put(key, supplier.get()); + } + + return map.get(key); + } } static class Inline implements WeakMap.Implementation {