From 59f00dfc64c8b12b97fb1922280e99c78b0e043e Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Wed, 14 Dec 2022 19:21:41 +0100 Subject: [PATCH] Remove remaining context class loader mentions (#7419) Continuation of #7391 --- ...ry.instrumentation.muzzle-check.gradle.kts | 29 ++----------------- .../tooling/bytebuddy/ExceptionHandlers.java | 7 +---- .../tooling/muzzle/ClassLoaderMatcher.java | 2 +- .../windows/WindowsTestContainerManager.java | 3 +- 4 files changed, 7 insertions(+), 34 deletions(-) diff --git a/gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts b/gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts index 6afb4e29dab8..23f5b5ed1fcc 100644 --- a/gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts +++ b/gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts @@ -130,9 +130,7 @@ tasks.register("printMuzzleReferences") { dependsOn(shadowModule) doLast { val instrumentationCL = createInstrumentationClassloader() - withContextClassLoader(instrumentationCL) { - MuzzleGradlePluginUtil.printMuzzleReferences(instrumentationCL) - } + MuzzleGradlePluginUtil.printMuzzleReferences(instrumentationCL) } } @@ -293,19 +291,8 @@ fun addMuzzleTask(muzzleDirective: MuzzleDirective, versionArtifact: Artifact?, doLast { val instrumentationCL = createInstrumentationClassloader() val userCL = createClassLoaderForTask(config) - withContextClassLoader(instrumentationCL) { - MuzzleGradlePluginUtil.assertInstrumentationMuzzled(instrumentationCL, userCL, - muzzleDirective.excludedInstrumentationNames.get(), muzzleDirective.assertPass.get()) - } - - for (thread in Thread.getAllStackTraces().keys) { - if (thread.contextClassLoader === instrumentationCL - || thread.contextClassLoader === userCL) { - throw GradleException( - "Task ${taskName} has spawned a thread: ${thread} with class loader ${thread.contextClassLoader}. " + - "This will prevent GC of dynamic muzzle classes. Aborting muzzle run.") - } - } + MuzzleGradlePluginUtil.assertInstrumentationMuzzled(instrumentationCL, userCL, + muzzleDirective.excludedInstrumentationNames.get(), muzzleDirective.assertPass.get()) } } @@ -414,13 +401,3 @@ fun muzzleDirectiveToArtifacts(muzzleDirective: MuzzleDirective, system: Reposit yieldAll(allVersionArtifacts) } - -fun withContextClassLoader(classLoader: ClassLoader, action: () -> Unit) { - val currentClassLoader = Thread.currentThread().contextClassLoader - Thread.currentThread().contextClassLoader = classLoader - try { - action() - } finally { - Thread.currentThread().contextClassLoader = currentClassLoader - } -} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java index ca5c563e8250..0ceb02bfd383 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java @@ -32,7 +32,6 @@ public boolean isValid() { @Override public StackManipulation.Size apply(MethodVisitor mv, Implementation.Context context) { String name = context.getInstrumentedType().getName(); - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // writes the following bytecode: // try { @@ -51,11 +50,7 @@ public StackManipulation.Size apply(MethodVisitor mv, Implementation.Context con // stack: (top) throwable mv.visitLabel(logStart); - mv.visitLdcInsn( - "Failed to handle exception in instrumentation for " - + name - + " on " - + classLoader); + mv.visitLdcInsn("Failed to handle exception in instrumentation for " + name); mv.visitInsn(Opcodes.SWAP); // stack: (top) throwable,string mv.visitMethodInsn( diff --git a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ClassLoaderMatcher.java b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ClassLoaderMatcher.java index 410e25368606..aa1a66ad4555 100644 --- a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ClassLoaderMatcher.java +++ b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ClassLoaderMatcher.java @@ -91,7 +91,7 @@ private static List checkHelperInjection( instrumentationModule.instrumentationName(), allHelperClasses, helperResourceBuilder.getResources(), - Thread.currentThread().getContextClassLoader(), + ClassLoaderMatcher.class.getClassLoader(), null) .transform(null, null, classLoader, null, null); } diff --git a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java index 3503a1ae047b..5dc11fcf3028 100644 --- a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java +++ b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java @@ -20,6 +20,7 @@ import io.opentelemetry.smoketest.AbstractTestContainerManager; import io.opentelemetry.smoketest.ResourceMapping; import io.opentelemetry.smoketest.TargetWaitStrategy; +import io.opentelemetry.smoketest.TestContainerManager; import io.opentelemetry.testing.internal.armeria.client.WebClient; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import java.io.ByteArrayInputStream; @@ -216,7 +217,7 @@ private boolean imageExists(String imageName) { private void copyResourceToContainer( String containerId, String resourcePath, String containerPath) throws IOException { try (InputStream is = - Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath)) { + TestContainerManager.class.getClassLoader().getResourceAsStream(resourcePath)) { copyFileToContainer(containerId, IOUtils.toByteArray(is), containerPath); } }