From ba4eea2d82022963b8c0329ee8f035b15eebe43e Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 26 May 2023 12:12:40 +0300 Subject: [PATCH] Don't open jfr recording stream when jfr metrics are not enabled (#8574) --- .../runtimemetrics/java17/RuntimeMetrics.java | 8 ++++++-- .../runtimemetrics/java17/RuntimeMetricsBuilder.java | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java index 0bdc3bdd1e..813c3ccff3 100644 --- a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java +++ b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java @@ -37,10 +37,14 @@ public final class RuntimeMetrics implements Closeable { @SuppressWarnings("CatchingUnchecked") RuntimeMetrics( - OpenTelemetry openTelemetry, Predicate featurePredicate, boolean disableJmx) { + OpenTelemetry openTelemetry, + Predicate featurePredicate, + boolean disableJmx, + boolean disableJfr) { this.openTelemetry = openTelemetry; try { - jfrRuntimeMetrics = JfrRuntimeMetrics.build(openTelemetry, featurePredicate); + jfrRuntimeMetrics = + disableJfr ? null : JfrRuntimeMetrics.build(openTelemetry, featurePredicate); // Set up metrics gathered by JMX if (!disableJmx) { diff --git a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilder.java b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilder.java index c582c32262..6eaede3ad7 100644 --- a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilder.java +++ b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilder.java @@ -73,8 +73,8 @@ public final class RuntimeMetricsBuilder { /** Build and start an {@link RuntimeMetrics} with the config from this builder. */ public RuntimeMetrics build() { - Predicate featurePredicate = - jfrFeature -> enabledFeatureMap.getOrDefault(jfrFeature, jfrFeature.isDefaultEnabled()); - return new RuntimeMetrics(openTelemetry, featurePredicate, disableJmx); + Predicate featurePredicate = jfrFeature -> enabledFeatureMap.get(jfrFeature); + boolean disableJfr = !enabledFeatureMap.keySet().stream().anyMatch(featurePredicate); + return new RuntimeMetrics(openTelemetry, featurePredicate, disableJmx, disableJfr); } }