GoogleCloudPlatform / opentelemetry-operations-java

Apache License 2.0
71 stars 38 forks source link

Latest exporter-auto incompatible with latest opentelemetry agent #263

Closed joao-melo-ingka closed 10 months ago

joao-melo-ingka commented 11 months ago

The following combination:

io.opentelemetry.javaagent:opentelemetry-javaagent:1.30.0 (latest, as of now) com.google.cloud.opentelemetry:exporter-auto:0.25.2-alpha:shaded (latest, as of now)

Doesn't work.

java.lang.NoClassDefFoundError: io/opentelemetry/javaagent/shaded/io/opentelemetry/semconv/resource/attributes/ResourceAttributes at shadow.com.google.cloud.opentelemetry.detectors.GCPResource.getAttributes(GCPResource.java:62) at shadow.com.google.cloud.opentelemetry.detectors.GCPResource.createResource(GCPResource.java:77) at io.opentelemetry.sdk.autoconfigure.ResourceConfiguration.configureResource(ResourceConfiguration.java:107) at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.build(AutoConfiguredOpenTelemetrySdkBuilder.java:335) at io.opentelemetry.javaagent.tooling.OpenTelemetryInstaller.installOpenTelemetrySdk(OpenTelemetryInstaller.java:34) at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:121) at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:101) at io.opentelemetry.javaagent.tooling.AgentStarterImpl.start(AgentStarterImpl.java:98) at io.opentelemetry.javaagent.bootstrap.AgentInitializer$1.run(AgentInitializer.java:53) at io.opentelemetry.javaagent.bootstrap.AgentInitializer$1.run(AgentInitializer.java:47) at io.opentelemetry.javaagent.bootstrap.AgentInitializer.execute(AgentInitializer.java:64) at io.opentelemetry.javaagent.bootstrap.AgentInitializer.initialize(AgentInitializer.java:46) at io.opentelemetry.javaagent.OpenTelemetryAgent.startAgent(OpenTelemetryAgent.java:57) at io.opentelemetry.javaagent.OpenTelemetryAgent.premain(OpenTelemetryAgent.java:45) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source) Caused by: java.lang.ClassNotFoundException: io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv.resource.attributes.ResourceAttributes at java.base/java.net.URLClassLoader.findClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 20 more

If I downgrade the opentelemetry java agent to 1.28.0, it works.

aabmass commented 11 months ago

Thanks for the report, we'll try to get this fixed soon. If anyone would like to send a PR, please drop a comment

psx95 commented 10 months ago

Thanks for the issue, I was able to reproduce it locally.

The root cause is mostly the recent breaking changes in the upstream OpenTelemetry Java repo(s). Need to update the dependencies used in the project and fix the breaking changes.

psx95 commented 10 months ago

After #267 got merged, I manually built the auto-exporter from the main branch to make sure it is compatible with the latest OTel agent.

The next release should work with latest OTel agent.