spring-projects-experimental / spring-cloud-sleuth-otel

Spring Cloud Sleuth support for OpenTelemetry
https://spring-projects-experimental.github.io/spring-cloud-sleuth-otel/docs/current/reference/html/
Apache License 2.0
111 stars 33 forks source link

BOM pulls in OTEL 1.16.0 whereas Autoconfigure pulls in 1.18.0 #129

Closed ghost closed 2 years ago

ghost commented 2 years ago

Describe the bug spring-cloud-sleuth-otel-autoconfigure overrides the version of OTEL specified in the BOM to 1.18.0 which means that it is not compatible with that is pulled from the BOM.

For example using io.opentelemetry:opentelemetry-exporter-logging pulls in 1.16.0 and that causes

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    io.opentelemetry.sdk.trace.SdkTracerBuilder.build(SdkTracerBuilder.java:39)

The following method did not exist:

    'java.lang.Object io.opentelemetry.sdk.internal.ComponentRegistry.get(java.lang.String, java.lang.String, java.lang.String)'

The calling method's class, io.opentelemetry.sdk.trace.SdkTracerBuilder, was loaded from the following location:

    jar:file:/Users/boris.morris/.gradle/caches/modules-2/files-2.1/io.opentelemetry/opentelemetry-sdk-trace/1.16.0/43888dcd61612d0a864b8e0f8c3e92d1b54155b8/opentelemetry-sdk-trace-1.16.0.jar!/io/opentelemetry/sdk/trace/SdkTracerBuilder.class

The called method's class, io.opentelemetry.sdk.internal.ComponentRegistry, is available from the following locations:

    jar:file:/Users/boris.morris/.gradle/caches/modules-2/files-2.1/io.opentelemetry/opentelemetry-sdk-common/1.18.0/fd96e64ce139cf23dcedbbee2e58cfe93e01352f/opentelemetry-sdk-common-1.18.0.jar!/io/opentelemetry/sdk/internal/ComponentRegistry.class

The called method's class hierarchy was loaded from the following locations:

    io.opentelemetry.sdk.internal.ComponentRegistry: file:/Users/boris.morris/.gradle/caches/modules-2/files-2.1/io.opentelemetry/opentelemetry-sdk-common/1.18.0/fd96e64ce139cf23dcedbbee2e58cfe93e01352f/opentelemetry-sdk-common-1.18.0.jar

Action:

Correct the classpath of your application so that it contains compatible versions of the classes io.opentelemetry.sdk.trace.SdkTracerBuilder and io.opentelemetry.sdk.internal.ComponentRegistry
marcingrzejszczak commented 2 years ago

Good catch @borismorris-anaplan!