Skip to content

Commit 7bd27d7

Browse files
committed
exclude JFR from native image at build time
1 parent 4e4e550 commit 7bd27d7

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java

-5
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,6 @@ CountDownLatch getStartUpLatch() {
136136
}
137137

138138
private static boolean isJfrAvailable() {
139-
if (System.getProperty("org.graalvm.nativeimage.imagecode") != null) {
140-
// GraalVM native image does not support JFR
141-
return false;
142-
}
143-
144139
try {
145140
Class.forName("jdk.jfr.FlightRecorder");
146141
// UnsatisfiedLinkError or ClassNotFoundException
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics;
2+
3+
import org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter;
4+
import org.springframework.beans.factory.support.RegisteredBean;
5+
6+
/**
7+
* Configures runtime metrics collection for Java 17+.
8+
*
9+
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
10+
* at any time.
11+
*/
12+
public class RuntimeMetricsBeanRegistrationExcludeFilter implements BeanRegistrationExcludeFilter {
13+
@Override
14+
public boolean isExcludedFromAotProcessing(RegisteredBean registeredBean) {
15+
// GraalVM native image does not support JFR, so we exclude Java 17+ runtime metrics provider
16+
return "io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider"
17+
.equals(registeredBean.getBeanName());
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
org.springframework.aot.hint.RuntimeHintsRegistrar=\
22
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.annotations.OpenTelemetryAnnotationsRuntimeHints
3+
4+
org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter=\
5+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsBeanRegistrationExcludeFilter

0 commit comments

Comments
 (0)