Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when using higher OTEL Version #209

Open
driverpt opened this issue Nov 16, 2022 · 3 comments
Open

Error when using higher OTEL Version #209

driverpt opened this issue Nov 16, 2022 · 3 comments
Assignees
Labels
type: dependency-upgrade Upgrade a dependency

Comments

@driverpt
Copy link

Expected Behavior

To work properly

Actual Behaviour

io.micronaut.context.exceptions.ConfigurationException: Exception thrown instantiating MicronautLambdaRuntimeHandler
--
at io.micronaut.function.aws.runtime.MicronautLambdaRuntime.createRequestHandler(MicronautLambdaRuntime.java:40)
at io.micronaut.function.aws.runtime.AbstractMicronautLambdaRuntime.createHandler(AbstractMicronautLambdaRuntime.java:200)
at io.micronaut.function.aws.runtime.AbstractMicronautLambdaRuntime.startRuntimeApiEventLoop(AbstractMicronautLambdaRuntime.java:321)
at io.micronaut.function.aws.runtime.AbstractMicronautLambdaRuntime.run(AbstractMicronautLambdaRuntime.java:137)
at io.micronaut.function.aws.runtime.MicronautLambdaRuntime.main(MicronautLambdaRuntime.java:50)
Caused by: com.amazonaws.serverless.exceptions.ContainerInitializationException: Error starting Micronaut container: Bean definition [io.micronaut.tracing.opentelemetry.interceptor.ContinueSpanOpenTelemetryTraceInterceptor] could not be loaded: io.opentelemetry.instrumentation.api.util.ClassAndMethod
at io.micronaut.function.aws.proxy.MicronautLambdaContainerHandler.initialize(MicronautLambdaContainerHandler.java:260)
at io.micronaut.function.aws.proxy.MicronautLambdaContainerHandler.<init>(MicronautLambdaContainerHandler.java:193)
at io.micronaut.function.aws.proxy.MicronautLambdaContainerHandler.<init>(MicronautLambdaContainerHandler.java:146)
at io.micronaut.function.aws.proxy.MicronautLambdaHandler.<init>(MicronautLambdaHandler.java:54)
at io.micronaut.function.aws.runtime.MicronautLambdaRuntime.createRequestHandler(MicronautLambdaRuntime.java:38)
... 4 more
Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Bean definition [io.micronaut.tracing.opentelemetry.interceptor.ContinueSpanOpenTelemetryTraceInterceptor] could not be loaded: io.opentelemetry.instrumentation.api.util.ClassAndMethod
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1907)
at io.micronaut.context.DefaultApplicationContext.initializeContext(DefaultApplicationContext.java:249)
at io.micronaut.context.DefaultBeanContext.readAllBeanDefinitionClasses(DefaultBeanContext.java:3326)
at io.micronaut.context.DefaultBeanContext.finalizeConfiguration(DefaultBeanContext.java:3684)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:341)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:194)
at io.micronaut.function.aws.proxy.MicronautLambdaContainerHandler.initialize(MicronautLambdaContainerHandler.java:256)
... 8 more
Caused by: java.lang.NoClassDefFoundError: io.opentelemetry.instrumentation.api.util.ClassAndMethod
at io.micronaut.tracing.opentelemetry.interceptor.$ContinueSpanOpenTelemetryTraceInterceptor$Definition.<clinit>(Unknown Source)
at io.micronaut.tracing.opentelemetry.interceptor.$ContinueSpanOpenTelemetryTraceInterceptor$Definition$Reference.load(Unknown Source)
at io.micronaut.context.AbstractInitializableBeanDefinitionReference.load(AbstractInitializableBeanDefinitionReference.java:145)
at io.micronaut.context.DefaultBeanContext.loadContextScopeBean(DefaultBeanContext.java:2724)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1905)
... 14 more

Steps To Reproduce

Add the following to dependencies:

val otelAlphaVersion = "1.18.0-alpha"
val otelVersion = "1.18.0"

dependencies {
    implementation(enforcedPlatform("io.opentelemetry:opentelemetry-bom:$otelVersion"))
    implementation(enforcedPlatform("io.opentelemetry:opentelemetry-bom-alpha:$otelAlphaVersion"))

    constraints {
        implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:$otelAlphaVersion")
        implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv:$otelAlphaVersion")
        implementation("io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:$otelAlphaVersion")
        implementation("io.opentelemetry.instrumentation:opentelemetry-aws-sdk-2.2:$otelAlphaVersion")
        implementation("io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0:$otelAlphaVersion")
    }

    implementation("io.micronaut.tracing:micronaut-tracing-opentelemetry-http")
    implementation("io.opentelemetry:opentelemetry-exporter-otlp")
    implementation("io.opentelemetry:opentelemetry-extension-aws")
    implementation("io.opentelemetry.instrumentation:opentelemetry-aws-sdk-2.2")
    implementation("io.opentelemetry.contrib:opentelemetry-aws-xray")

    runtimeOnly("ch.qos.logback:logback-classic")
    implementation("io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0")
}

reflect-json.config

[
  {
    "name": "io.opentelemetry.instrumentation.logback.v1_0.LoggingEventWrapper",
    "allDeclaredFields": true,
    "allDeclaredMethods": true,
    "allDeclaredConstructors": true,
    "condition": {
      "typeReachable": "io.opentelemetry.instrumentation.logback.v1_0.LoggingEventWrapper"
    }
  },
  {
    "name": "io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender",
    "allDeclaredFields": true,
    "allDeclaredMethods": true,
    "allDeclaredConstructors": true,
    "condition": {
      "typeReachable": "io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender"
    }
  },
  {
    "name": "io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap",
    "allDeclaredFields": true,
    "allDeclaredMethods": true,
    "allDeclaredConstructors": true,
    "condition": {
      "typeReachable": "io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap"
    }
  },
  {
    "name": "io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap$ConcatenatedSet",
    "allDeclaredFields": true,
    "allDeclaredMethods": true,
    "allDeclaredConstructors": true,
    "condition": {
      "typeReachable": "io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap$ConcatenatedSet"
    }
  }
]

Environment Information

JDK Version: 11
GraalVM Version: 22.2.0

Example Application

No response

Version

3.7.3

@altro3
Copy link
Contributor

altro3 commented Nov 22, 2022

@driverpt
Copy link
Author

Is it possible to dynamically configure OTEL Version?

@altro3
Copy link
Contributor

altro3 commented Nov 23, 2022

What do you mean? Change the version that is used in micronaut to your own? If yes, then only in theory. The reality is that the api changes with each version and there is no guarantee that the latest version of micronaut-tracing will work with any version of opentelemetry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: dependency-upgrade Upgrade a dependency
Projects
None yet
Development

No branches or pull requests

4 participants