Skip to content

Commit 5cc422a

Browse files
committed
Fix Spring Boot 2 Java 8 compatibility
1 parent 62e4de9 commit 5cc422a

File tree

6 files changed

+51
-37
lines changed

6 files changed

+51
-37
lines changed

instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ dependencies {
5454
compileOnly("ch.qos.logback:logback-classic:1.0.0")
5555
implementation(project(":instrumentation:jdbc:library"))
5656
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java8:library"))
57-
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java17:library"))
5857

5958
library("org.springframework.kafka:spring-kafka:2.9.0")
6059
library("org.springframework.boot:spring-boot-starter-actuator:$springBootVersion")

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

Lines changed: 0 additions & 34 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics;
7+
8+
import io.opentelemetry.api.OpenTelemetry;
9+
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
10+
import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics;
11+
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RuntimeMetricsConfigUtil;
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
14+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
15+
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
16+
import org.springframework.boot.system.JavaVersion;
17+
import org.springframework.context.annotation.Bean;
18+
import org.springframework.context.annotation.Configuration;
19+
20+
/**
21+
* Configures runtime metrics collection for Java 17+.
22+
*
23+
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
24+
* at any time.
25+
*/
26+
@Configuration
27+
@ConditionalOnJava(JavaVersion.SEVENTEEN)
28+
@ConditionalOnClass(RuntimeMetrics.class)
29+
public class Java17RuntimeMetricsAutoConfiguration {
30+
private static final Logger logger =
31+
LoggerFactory.getLogger(Java17RuntimeMetricsAutoConfiguration.class);
32+
33+
@Bean
34+
RuntimeMetricsProvider java17RuntimeMetricsProvider() {
35+
return new RuntimeMetricsProvider() {
36+
@Override
37+
public int minJavaVersion() {
38+
return 17;
39+
}
40+
41+
@Override
42+
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
43+
logger.debug("Use runtime metrics instrumentation for Java 17+");
44+
return RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
45+
}
46+
};
47+
}
48+
}

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
1313
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration,\
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration,\
1515
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider,\
16-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
16+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration
1717

1818
org.springframework.context.ApplicationListener=\
1919
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.logging.LogbackAppenderApplicationListener

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
1313
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration
1515
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider
16-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
16+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration

smoke-tests-otel-starter/spring-boot-3/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ dependencies {
2121
implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
2222

2323
implementation(project(":smoke-tests-otel-starter:spring-boot-common"))
24+
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java17:library"))
2425
testImplementation("org.testcontainers:junit-jupiter")
2526
testImplementation("org.testcontainers:kafka")
2627
testImplementation("org.testcontainers:mongodb")

0 commit comments

Comments
 (0)