Skip to content

Commit 68f4a31

Browse files
committed
Load Handlers class before initializing JMX
1 parent 6bdc537 commit 68f4a31

File tree

2 files changed

+8
-8
lines changed
  • dd-java-agent
    • agent-bootstrap/src/main/java/datadog/trace/bootstrap
    • agent-profiling/profiling-controller-openjdk/src/main/java/com/datadog/profiling/controller/openjdk/events

2 files changed

+8
-8
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,14 @@ private static synchronized void startJmx() {
866866
if (jmxStarting.getAndSet(true)) {
867867
return; // another thread is already in startJmx
868868
}
869+
// Load JFR Handlers class early, if present (it has been moved and renamed in JDK23+).
870+
// This prevents a deadlock. See PROF-13025.
871+
try {
872+
Agent.class.getClassLoader().loadClass("jdk.jfr.events.Handlers");
873+
} catch (Exception e) {
874+
// Ignore when the class is not found or anything else goes wrong.
875+
}
876+
869877
if (jmxFetchEnabled) {
870878
startJmxFetch();
871879
}

dd-java-agent/agent-profiling/profiling-controller-openjdk/src/main/java/com/datadog/profiling/controller/openjdk/events/SmapEntryFactory.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ public class SmapEntryFactory {
2727
private static final SmapEntryCache SMAP_ENTRY_CACHE = new SmapEntryCache(Duration.ofMillis(500));
2828

2929
static {
30-
// Load JFR Handlers class early, if present (it has been moved and renamed in JDK23+).
31-
// This prevents a deadlock. See PROF-13025.
32-
try {
33-
SmapEntryFactory.class.getClassLoader().loadClass("jdk.jfr.events.Handlers");
34-
} catch (Exception e) {
35-
// Ignore when the class is not found or anything else goes wrong.
36-
}
37-
3830
if (!JavaVirtualMachine.isJ9() && !JavaVirtualMachine.isOracleJDK8()) {
3931
SMAP_ENTRY_EVENT_TYPE = EventType.getEventType(SmapEntryEvent.class);
4032
AGGREGATED_SMAP_ENTRY_EVENT_TYPE = EventType.getEventType(AggregatedSmapEntryEvent.class);

0 commit comments

Comments
 (0)