Skip to content

Commit adb3df5

Browse files
fix: pr suggestions
1 parent 082abbf commit adb3df5

2 files changed

Lines changed: 15 additions & 16 deletions

File tree

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/compiler/CompilerModuleExporter.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import java.lang.instrument.ClassFileTransformer;
55
import java.lang.instrument.Instrumentation;
66
import java.security.ProtectionDomain;
7-
import java.util.Collections;
8-
import java.util.Set;
97
import java.util.concurrent.ConcurrentHashMap;
108
import org.slf4j.Logger;
119
import org.slf4j.LoggerFactory;
@@ -35,8 +33,8 @@ public class CompilerModuleExporter implements ClassFileTransformer {
3533
};
3634

3735
private final Instrumentation inst;
38-
private final Set<ClassLoader> exportedClassLoaders =
39-
Collections.newSetFromMap(new ConcurrentHashMap<>());
36+
private final ConcurrentHashMap<ClassLoader, Boolean> exportedClassLoaders =
37+
new ConcurrentHashMap<>();
4038

4139
public CompilerModuleExporter(Instrumentation inst) {
4240
this.inst = inst;
@@ -49,18 +47,19 @@ public byte[] transform(
4947
Class<?> classBeingRedefined,
5048
ProtectionDomain protectionDomain,
5149
byte[] classfileBuffer) {
52-
if (loader != null
53-
&& className != null
54-
&& className.startsWith(COMPILER_PLUGIN_CLASS_PREFIX)
55-
&& exportedClassLoaders.add(loader)) {
56-
try {
57-
JDK9ModuleAccess.exportModuleToUnnamedModule(
58-
inst, "jdk.compiler", COMPILER_PACKAGES, loader);
59-
LOGGER.debug("Exported jdk.compiler to classloader {}", loader);
60-
} catch (Throwable e) {
61-
LOGGER.debug("Could not export jdk.compiler packages for compiler plugin", e);
62-
}
50+
if (loader != null && className != null && className.startsWith(COMPILER_PLUGIN_CLASS_PREFIX)) {
51+
exportedClassLoaders.computeIfAbsent(loader, this::exportJdkCompilerModule);
6352
}
6453
return null; // no bytecode modification
6554
}
55+
56+
private Boolean exportJdkCompilerModule(ClassLoader loader) {
57+
try {
58+
JDK9ModuleAccess.exportModuleToUnnamedModule(inst, "jdk.compiler", COMPILER_PACKAGES, loader);
59+
LOGGER.debug("Exported jdk.compiler to classloader {}", loader);
60+
} catch (Throwable e) {
61+
LOGGER.debug("Could not export jdk.compiler packages for compiler plugin", e);
62+
}
63+
return Boolean.TRUE;
64+
}
6665
}

internal-api/internal-api-9/src/main/java/datadog/trace/util/JDK9ModuleAccess.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ public static void exportModuleToUnnamedModule(
5858
extraExports.put(packageName, target);
5959
}
6060

61-
inst.redefineModule(module, emptySet(), (Map) extraExports, emptyMap(), emptySet(), emptyMap());
61+
inst.redefineModule(module, emptySet(), extraExports, emptyMap(), emptySet(), emptyMap());
6262
}
6363
}

0 commit comments

Comments
 (0)