parent
35727bcffe
commit
be6816489a
|
@ -24,7 +24,7 @@ public final class AgentInitializer {
|
||||||
|
|
||||||
// Accessed via reflection from tests.
|
// Accessed via reflection from tests.
|
||||||
// fields must be managed under class lock
|
// fields must be managed under class lock
|
||||||
@Nullable private static ClassLoader agentClassloader = null;
|
@Nullable private static ClassLoader agentClassLoader = null;
|
||||||
|
|
||||||
// called via reflection in the OpenTelemetryAgent class
|
// called via reflection in the OpenTelemetryAgent class
|
||||||
public static void initialize(Instrumentation inst, URL bootstrapUrl) throws Exception {
|
public static void initialize(Instrumentation inst, URL bootstrapUrl) throws Exception {
|
||||||
|
@ -33,9 +33,8 @@ public final class AgentInitializer {
|
||||||
|
|
||||||
private static synchronized void startAgent(Instrumentation inst, URL bootstrapUrl)
|
private static synchronized void startAgent(Instrumentation inst, URL bootstrapUrl)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
if (agentClassloader == null) {
|
if (agentClassLoader == null) {
|
||||||
ClassLoader agentClassLoader = createAgentClassLoader("inst", bootstrapUrl);
|
agentClassLoader = createAgentClassLoader("inst", bootstrapUrl);
|
||||||
agentClassloader = agentClassLoader;
|
|
||||||
|
|
||||||
Class<?> agentInstallerClass =
|
Class<?> agentInstallerClass =
|
||||||
agentClassLoader.loadClass("io.opentelemetry.javaagent.tooling.AgentInstaller");
|
agentClassLoader.loadClass("io.opentelemetry.javaagent.tooling.AgentInstaller");
|
||||||
|
@ -52,8 +51,8 @@ public final class AgentInitializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO misleading name
|
// TODO misleading name
|
||||||
public static synchronized ClassLoader getAgentClassloader() {
|
public static synchronized ClassLoader getAgentClassLoader() {
|
||||||
return agentClassloader;
|
return agentClassLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class Utils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClassLoader getExtensionsClassLoader() {
|
public static ClassLoader getExtensionsClassLoader() {
|
||||||
return AgentInitializer.getAgentClassloader();
|
return AgentInitializer.getAgentClassLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return a classloader which can be used to look up bootstrap resources. */
|
/** Return a classloader which can be used to look up bootstrap resources. */
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class IntegrationTestUtils {
|
||||||
|
|
||||||
/** Returns the classloader the core agent is running on. */
|
/** Returns the classloader the core agent is running on. */
|
||||||
public static ClassLoader getAgentClassLoader() {
|
public static ClassLoader getAgentClassLoader() {
|
||||||
return getAgentFieldClassloader("agentClassloader");
|
return getAgentFieldClassloader("agentClassLoader");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ClassLoader getAgentFieldClassloader(String fieldName) {
|
private static ClassLoader getAgentFieldClassloader(String fieldName) {
|
||||||
|
|
|
@ -16,9 +16,9 @@ public final class AgentClassLoaderAccess {
|
||||||
Class<?> agentInitializerClass =
|
Class<?> agentInitializerClass =
|
||||||
ClassLoader.getSystemClassLoader()
|
ClassLoader.getSystemClassLoader()
|
||||||
.loadClass("io.opentelemetry.javaagent.bootstrap.AgentInitializer");
|
.loadClass("io.opentelemetry.javaagent.bootstrap.AgentInitializer");
|
||||||
Field agentClassloader = agentInitializerClass.getDeclaredField("agentClassloader");
|
Field agentClassLoaderField = agentInitializerClass.getDeclaredField("agentClassLoader");
|
||||||
agentClassloader.setAccessible(true);
|
agentClassLoaderField.setAccessible(true);
|
||||||
agentClassLoader = (ClassLoader) agentClassloader.get(null);
|
agentClassLoader = (ClassLoader) agentClassLoaderField.get(null);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
throw new AssertionError("Could not access agent classLoader", t);
|
throw new AssertionError("Could not access agent classLoader", t);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue