From 41415e51155d9147b6d119502bd94d3617180cd4 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 14 Jul 2025 16:19:24 +0300 Subject: [PATCH] Clear context class loader from started threads --- .../main/java/io/opentelemetry/context/StrictContextStorage.java | 1 + .../extension/incubator/trace/LeakDetectingSpanProcessor.java | 1 + .../java/io/opentelemetry/sdk/internal/DaemonThreadFactory.java | 1 + 3 files changed, 3 insertions(+) diff --git a/context/src/main/java/io/opentelemetry/context/StrictContextStorage.java b/context/src/main/java/io/opentelemetry/context/StrictContextStorage.java index aeed325c36..3c8fa72c2e 100644 --- a/context/src/main/java/io/opentelemetry/context/StrictContextStorage.java +++ b/context/src/main/java/io/opentelemetry/context/StrictContextStorage.java @@ -252,6 +252,7 @@ final class StrictContextStorage implements ContextStorage, AutoCloseable { thread.setName("weak-ref-cleaner-strictcontextstorage"); thread.setPriority(Thread.MIN_PRIORITY); thread.setDaemon(true); + thread.setContextClassLoader(null); thread.start(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/LeakDetectingSpanProcessor.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/LeakDetectingSpanProcessor.java index 8fd7b68ce3..9adcba424d 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/LeakDetectingSpanProcessor.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/LeakDetectingSpanProcessor.java @@ -87,6 +87,7 @@ public final class LeakDetectingSpanProcessor implements SpanProcessor { thread.setName("weak-ref-cleaner-leakingspandetector"); thread.setPriority(Thread.MIN_PRIORITY); thread.setDaemon(true); + thread.setContextClassLoader(null); thread.start(); return pendingSpans; } diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/internal/DaemonThreadFactory.java b/sdk/common/src/main/java/io/opentelemetry/sdk/internal/DaemonThreadFactory.java index e8f75abe40..b09585663c 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/internal/DaemonThreadFactory.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/internal/DaemonThreadFactory.java @@ -48,6 +48,7 @@ public final class DaemonThreadFactory implements ThreadFactory { try { t.setDaemon(true); t.setName(namePrefix + "-" + counter.incrementAndGet()); + t.setContextClassLoader(null); } catch (SecurityException e) { // Well, we tried. }