diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java index 8cf043d0e4d3..4d13036dab24 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java @@ -224,7 +224,7 @@ private static void installEarlyInstrumentation( (builder, typeDescription, classLoader, module, protectionDomain) -> builder); VirtualFieldImplementationInstallerFactory virtualFieldInstallerFactory = - new VirtualFieldImplementationInstallerFactory(); + VirtualFieldImplementationInstallerFactory.getInstance(); for (EarlyInstrumentationModule earlyInstrumentationModule : loadOrdered(EarlyInstrumentationModule.class, Utils.getExtensionsClassLoader())) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java index 3da93ab694c2..c83aa3797843 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java @@ -18,11 +18,17 @@ public final class VirtualFieldImplementationInstallerFactory { private static final TransformSafeLogger logger = TransformSafeLogger.getLogger(VirtualFieldImplementationInstallerFactory.class); + private static final VirtualFieldImplementationInstallerFactory INSTANCE = + new VirtualFieldImplementationInstallerFactory(); - public VirtualFieldImplementationInstallerFactory() { + private VirtualFieldImplementationInstallerFactory() { RuntimeVirtualFieldSupplier.set(new RuntimeFieldBasedImplementationSupplier()); } + public static VirtualFieldImplementationInstallerFactory getInstance() { + return INSTANCE; + } + public VirtualFieldImplementationInstaller create(InstrumentationModule instrumentationModule) { VirtualFieldMappingsBuilderImpl builder = new VirtualFieldMappingsBuilderImpl(); if (instrumentationModule instanceof InstrumentationModuleMuzzle) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java index b4ea4b948639..09bc519812a9 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java @@ -54,7 +54,7 @@ public final class InstrumentationModuleInstaller { private final Instrumentation instrumentation; private final VirtualFieldImplementationInstallerFactory virtualFieldInstallerFactory = - new VirtualFieldImplementationInstallerFactory(); + VirtualFieldImplementationInstallerFactory.getInstance(); public InstrumentationModuleInstaller(Instrumentation instrumentation) { this.instrumentation = instrumentation;