Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,4 @@ tasks {
dependsOn(testPS)
dependsOn(testSerial)
}

tasks {
compileJava {
// We compile this module for java 8 because it is used as a dependency in spring-boot-autoconfigure.
// If this module is compiled for java 17 then gradle can figure out based on the metadata that
// spring-boot-autoconfigure has a dependency that requires 17 and fails the build when it is used
// in a project that targets an earlier java version.
// https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/13384
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
options.release.set(null as Int?)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ dependencies {
compileOnly("ch.qos.logback:logback-classic:1.0.0")
implementation(project(":instrumentation:jdbc:library"))
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java8:library"))
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java17:library"))

library("org.springframework.kafka:spring-kafka:2.9.0")
library("org.springframework.boot:spring-boot-starter-actuator:$springBootVersion")
Expand Down Expand Up @@ -99,6 +98,7 @@ dependencies {

// needed for the Spring Boot 3 support
implementation(project(":instrumentation:spring:spring-webmvc:spring-webmvc-6.0:library"))
compileOnly(project(":instrumentation:runtime-telemetry:runtime-telemetry-java17:library"))

// give access to common classes, e.g. InstrumentationConfigUtil
add("javaSpring3CompileOnly", files(sourceSets.main.get().output.classesDirs))
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics;

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics;
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RuntimeMetricsConfigUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.system.JavaVersion;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* Configures runtime metrics collection for Java 17+.
*
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
@Configuration
@ConditionalOnJava(JavaVersion.SEVENTEEN)
@ConditionalOnClass(RuntimeMetrics.class)
public class Java17RuntimeMetricsAutoConfiguration {
private static final Logger logger =
LoggerFactory.getLogger(Java17RuntimeMetricsAutoConfiguration.class);

static final String JAVA_17_RUNTIME_METRICS_PROVIDER_BEAN_NAME = "java17RuntimeMetricsProvider";

@Bean(name = JAVA_17_RUNTIME_METRICS_PROVIDER_BEAN_NAME)
RuntimeMetricsProvider java17RuntimeMetricsProvider() {
return new RuntimeMetricsProvider() {
@Override
public int minJavaVersion() {
return 17;
}

@Override
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
logger.debug("Use runtime metrics instrumentation for Java 17+");
return RuntimeMetricsConfigUtil.configure(RuntimeMetrics.builder(openTelemetry), config);
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public boolean isExcludedFromAotProcessing(RegisteredBean registeredBean) {
// The JFR-based runtime metric code is excluded from the Spring AOT processing step.
// That way, this code is not included in a Spring native image application.

return Java17RuntimeMetricsProvider.class.getName().equals(registeredBean.getBeanName());
return Java17RuntimeMetricsAutoConfiguration.JAVA_17_RUNTIME_METRICS_PROVIDER_BEAN_NAME.equals(
registeredBean.getBeanName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration,\
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration,\
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider,\
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration

org.springframework.context.ApplicationListener=\
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.logging.LogbackAppenderApplicationListener
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration
1 change: 1 addition & 0 deletions smoke-tests-otel-starter/spring-boot-3/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ dependencies {
implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))

implementation(project(":smoke-tests-otel-starter:spring-boot-common"))
implementation(project(":instrumentation:runtime-telemetry:runtime-telemetry-java17:library"))
testImplementation("org.testcontainers:junit-jupiter")
testImplementation("org.testcontainers:kafka")
testImplementation("org.testcontainers:mongodb")
Expand Down
Loading