Skip to content

Commit 838af2e

Browse files
committed
pr review
1 parent 3c10824 commit 838af2e

File tree

6 files changed

+17
-29
lines changed

6 files changed

+17
-29
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import jdk.jfr.consumer.RecordingStream;
2222

2323
/** The entry point class for runtime metrics support using JFR and JMX. */
24-
public final class RuntimeMetrics implements Closeable {
24+
public final class RuntimeMetrics implements AutoCloseable {
2525

2626
private static final Logger logger = Logger.getLogger(RuntimeMetrics.class.getName());
2727

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.JmxRuntimeMetricsUtil;
10-
import java.io.Closeable;
1110
import java.util.Collections;
1211
import java.util.List;
1312
import java.util.concurrent.atomic.AtomicBoolean;
1413
import java.util.logging.Level;
1514
import java.util.logging.Logger;
1615

1716
/** The entry point class for runtime metrics support using JMX. */
18-
public final class RuntimeMetrics implements Closeable {
17+
public final class RuntimeMetrics implements AutoCloseable {
1918

2019
private static final Logger logger = Logger.getLogger(RuntimeMetrics.class.getName());
2120

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/Java17RuntimeMetricsProvider.java

+2-8
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1010
import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RuntimeMetricsConfigUtil;
12-
import java.util.function.Consumer;
1312
import org.slf4j.Logger;
1413
import org.slf4j.LoggerFactory;
1514

@@ -28,13 +27,8 @@ public int minJavaVersion() {
2827
}
2928

3029
@Override
31-
public void start(
32-
OpenTelemetry openTelemetry, Consumer<Runnable> shutdownHook, InstrumentationConfig config) {
30+
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
3331
logger.debug("Use runtime metrics instrumentation for Java 17+");
34-
RuntimeMetrics runtimeMetrics =
35-
RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
36-
if (runtimeMetrics != null) {
37-
shutdownHook.accept(runtimeMetrics::close);
38-
}
32+
return RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
3933
}
4034
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/Java8RuntimeMetricsProvider.java

+3-9
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1010
import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.RuntimeMetricsConfigUtil;
12-
import java.util.function.Consumer;
1312
import org.slf4j.Logger;
1413
import org.slf4j.LoggerFactory;
1514

@@ -24,17 +23,12 @@ public class Java8RuntimeMetricsProvider implements RuntimeMetricsProvider {
2423

2524
@Override
2625
public int minJavaVersion() {
27-
return 1;
26+
return 8;
2827
}
2928

3029
@Override
31-
public void start(
32-
OpenTelemetry openTelemetry, Consumer<Runnable> shutdownHook, InstrumentationConfig config) {
30+
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
3331
logger.debug("Use runtime metrics instrumentation for Java 8");
34-
RuntimeMetrics runtimeMetrics =
35-
RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
36-
if (runtimeMetrics != null) {
37-
shutdownHook.accept(runtimeMetrics::close);
38-
}
32+
return RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
3933
}
4034
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/RuntimeMetricsAutoConfiguration.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ public class RuntimeMetricsAutoConfiguration {
3232
private static final Logger logger =
3333
LoggerFactory.getLogger(RuntimeMetricsAutoConfiguration.class);
3434

35-
private Runnable shutdownHook;
35+
private AutoCloseable closeable;
3636

3737
@PreDestroy
38-
public void stopMetrics() {
39-
if (shutdownHook != null) {
40-
shutdownHook.run();
38+
public void stopMetrics() throws Exception {
39+
if (closeable != null) {
40+
closeable.close();
4141
}
4242
}
4343

@@ -48,15 +48,16 @@ public void handleApplicationReadyEvent(ApplicationReadyEvent event) {
4848
ConfigPropertiesBridge config =
4949
new ConfigPropertiesBridge(applicationContext.getBean(ConfigProperties.class));
5050

51-
double version = Double.parseDouble(System.getProperty("java.specification.version"));
51+
double version =
52+
Math.max(8, Double.parseDouble(System.getProperty("java.specification.version")));
5253
Optional<RuntimeMetricsProvider> metricsProvider =
5354
applicationContext.getBeanProvider(RuntimeMetricsProvider.class).stream()
5455
.sorted(Comparator.comparing(RuntimeMetricsProvider::minJavaVersion).reversed())
5556
.filter(provider -> provider.minJavaVersion() <= version)
5657
.findFirst();
5758

5859
if (metricsProvider.isPresent()) {
59-
metricsProvider.get().start(openTelemetry, runnable -> shutdownHook = runnable, config);
60+
this.closeable = metricsProvider.get().start(openTelemetry, config);
6061
} else {
6162
logger.debug("No runtime metrics instrumentation available for Java {}", version);
6263
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/RuntimeMetricsProvider.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
10-
import java.util.function.Consumer;
10+
import javax.annotation.Nullable;
1111

1212
/**
1313
* Configures runtime metrics collection.
@@ -18,6 +18,6 @@
1818
public interface RuntimeMetricsProvider {
1919
int minJavaVersion();
2020

21-
void start(
22-
OpenTelemetry openTelemetry, Consumer<Runnable> shutdownHook, InstrumentationConfig config);
21+
@Nullable
22+
AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config);
2323
}

0 commit comments

Comments
 (0)