Make context maps 'global' for a given key class name
This ensures that different instrumenters using same key class can see each others state
This commit is contained in:
parent
df0889b07d
commit
3c0ba56d2c
|
@ -11,7 +11,6 @@ import datadog.trace.bootstrap.WeakMap;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import jdk.internal.org.objectweb.asm.ClassWriter;
|
import jdk.internal.org.objectweb.asm.ClassWriter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -298,11 +297,7 @@ public class MapBackedProvider implements InstrumentationContextProvider {
|
||||||
new HashMap<>(instrumenter.contextStore().size());
|
new HashMap<>(instrumenter.contextStore().size());
|
||||||
for (final String keyClassName : instrumenter.contextStore().keySet()) {
|
for (final String keyClassName : instrumenter.contextStore().keySet()) {
|
||||||
final String dynamicClassName =
|
final String dynamicClassName =
|
||||||
instrumenter.getClass().getName()
|
getClass().getName() + "$ContextStore" + keyClassName.replaceAll("\\.", "\\$");
|
||||||
+ "$ContextStore"
|
|
||||||
+ keyClassName.replaceAll(".*([^\\.]+)$", "\\1")
|
|
||||||
+ UUID.randomUUID().toString().replace('-', '_');
|
|
||||||
|
|
||||||
dynamicClassNames.put(keyClassName, dynamicClassName);
|
dynamicClassNames.put(keyClassName, dynamicClassName);
|
||||||
dynamicClasses.put(dynamicClassName, makeMapHolderClass(dynamicClassName));
|
dynamicClasses.put(dynamicClassName, makeMapHolderClass(dynamicClassName));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue