acherla opened a new issue, #13924:
URL: https://github.com/apache/druid/issues/13924

   opentelemetry-emitter fails to load on startup when added to the load-list 
when starting up druid with the documented configuration. 
https://github.com/apache/druid/tree/master/extensions-contrib/opentelemetry-emitter
   
   ```
   Exception in thread "main" java.lang.RuntimeException: 
com.google.inject.CreationException: Unable to create injector, see the 
following errors:
   
   1) Error in custom provider, 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException:
 OTLP gRPC Trace Exporter enabled but opentelemetry-exporter-otlp not found on 
classpath. Make sure to add it as a dependency to enable this feature.
     at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule.getEmitter(OpenTelemetryEmitterModule.java:58)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule)
     at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule.getEmitter(OpenTelemetryEmitterModule.java:58)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule)
     while locating org.apache.druid.java.util.emitter.core.Emitter annotated 
with @com.google.inject.name.Named(value=opentelemetry)
     at 
org.apache.druid.server.emitter.EmitterModule.getServiceEmitter(EmitterModule.java:104)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.emitter.EmitterModule)
     at 
org.apache.druid.server.emitter.EmitterModule.getServiceEmitter(EmitterModule.java:104)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.emitter.EmitterModule)
     while locating org.apache.druid.java.util.emitter.service.ServiceEmitter
       for the 4th parameter of 
org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110)
     at 
org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.metrics.MetricsModule)
     while locating org.apache.druid.java.util.metrics.MonitorScheduler
     at 
org.apache.druid.server.metrics.MetricsModule.configure(MetricsModule.java:95) 
(via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.metrics.MetricsModule)
     while locating org.apache.druid.java.util.metrics.MonitorScheduler 
annotated with @com.google.inject.name.Named(value=ForTheEagerness)
   
   1 error
           at 
org.apache.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:88)
           at org.apache.druid.cli.ServerRunnable.run(ServerRunnable.java:62)
           at org.apache.druid.cli.Main.main(Main.java:112)
   Caused by: com.google.inject.CreationException: Unable to create injector, 
see the following errors:
   
   1) Error in custom provider, 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException:
 OTLP gRPC Trace Exporter enabled but opentelemetry-exporter-otlp not found on 
classpath. Make sure to add it as a dependency to enable this feature.
     at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule.getEmitter(OpenTelemetryEmitterModule.java:58)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule)
     at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule.getEmitter(OpenTelemetryEmitterModule.java:58)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule)
     while locating org.apache.druid.java.util.emitter.core.Emitter annotated 
with @com.google.inject.name.Named(value=opentelemetry)
     at 
org.apache.druid.server.emitter.EmitterModule.getServiceEmitter(EmitterModule.java:104)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.emitter.EmitterModule)
     at 
org.apache.druid.server.emitter.EmitterModule.getServiceEmitter(EmitterModule.java:104)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.emitter.EmitterModule)
     while locating org.apache.druid.java.util.emitter.service.ServiceEmitter
       for the 4th parameter of 
org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110)
     at 
org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.metrics.MetricsModule)
     while locating org.apache.druid.java.util.metrics.MonitorScheduler
     at 
org.apache.druid.server.metrics.MetricsModule.configure(MetricsModule.java:95) 
(via modules: com.google.inject.util.Modules$OverrideModule -> 
com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.server.metrics.MetricsModule)
     while locating org.apache.druid.java.util.metrics.MonitorScheduler 
annotated with @com.google.inject.name.Named(value=ForTheEagerness)
   
   1 error
           at 
com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
           at 
com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
           at 
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
           at com.google.inject.Guice.createInjector(Guice.java:99)
           at com.google.inject.Guice.createInjector(Guice.java:73)
           at com.google.inject.Guice.createInjector(Guice.java:62)
           at 
org.apache.druid.initialization.ExtensionInjectorBuilder.build(ExtensionInjectorBuilder.java:49)
           at 
org.apache.druid.initialization.ServerInjectorBuilder.build(ServerInjectorBuilder.java:118)
           at 
org.apache.druid.initialization.ServerInjectorBuilder.makeServerInjector(ServerInjectorBuilder.java:73)
           at 
org.apache.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:85)
           ... 2 more
   Caused by: 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException:
 OTLP gRPC Trace Exporter enabled but opentelemetry-exporter-otlp not found on 
classpath. Make sure to add it as a dependency to enable this feature.
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.ClasspathUtil.checkClassExists(ClasspathUtil.java:17)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.SpanExporterConfiguration.configureOtlp(SpanExporterConfiguration.java:130)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.SpanExporterConfiguration.configureExporter(SpanExporterConfiguration.java:88)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.SpanExporterConfiguration.lambda$configureSpanExporters$1(SpanExporterConfiguration.java:80)
           at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
           at 
java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
           at java.util.Collections$2.tryAdvance(Collections.java:4719)
           at java.util.Collections$2.forEachRemaining(Collections.java:4727)
           at 
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
           at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
           at 
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
           at 
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
           at 
java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.SpanExporterConfiguration.configureSpanExporters(SpanExporterConfiguration.java:77)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.TracerProviderConfiguration.configureTracerProvider(TracerProviderConfiguration.java:52)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.OpenTelemetrySdkAutoConfiguration.initialize(OpenTelemetrySdkAutoConfiguration.java:66)
           at 
org.apache.druid.opentelemetry.shaded.io.opentelemetry.sdk.autoconfigure.OpenTelemetrySdkAutoConfiguration.initialize(OpenTelemetrySdkAutoConfiguration.java:46)
           at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule.getEmitter(OpenTelemetryEmitterModule.java:58)
           at 
org.apache.druid.emitter.opentelemetry.OpenTelemetryEmitterModule$$FastClassByGuice$$545204ec.invoke(<generated>)
           at 
com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
           at 
com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401)
           at 
com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
           at 
org.apache.druid.guice.LifecycleScope$1.get(LifecycleScope.java:68)
           at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
           at 
com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
           at 
com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015)
           at 
com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1050)
           at 
org.apache.druid.server.emitter.ComposingEmitterModule$1.apply(ComposingEmitterModule.java:65)
           at 
org.apache.druid.server.emitter.ComposingEmitterModule$1.apply(ComposingEmitterModule.java:61)
           at 
com.google.common.collect.Lists$TransformingRandomAccessList$1.transform(Lists.java:582)
           at 
com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
           at java.util.AbstractCollection.toString(AbstractCollection.java:461)
           at java.lang.String.valueOf(String.java:2994)
           at java.lang.StringBuilder.append(StringBuilder.java:136)
           at 
org.apache.druid.java.util.emitter.core.ComposingEmitter.toString(ComposingEmitter.java:109)
           at 
java.util.Formatter$FormatSpecifier.printString(Formatter.java:2886)
           at java.util.Formatter$FormatSpecifier.print(Formatter.java:2763)
           at java.util.Formatter.format(Formatter.java:2520)
           at java.util.Formatter.format(Formatter.java:2455)
           at java.lang.String.format(String.java:2981)
           at 
org.apache.druid.java.util.common.StringUtils.nonStrictFormat(StringUtils.java:363)
           at 
org.apache.druid.java.util.common.logger.Logger.info(Logger.java:105)
           at 
org.apache.druid.server.emitter.EmitterModule.getServiceEmitter(EmitterModule.java:105)
           at 
org.apache.druid.server.emitter.EmitterModule$$FastClassByGuice$$4b8c4ff1.invoke(<generated>)
           at 
com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
           at 
com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401)
           at 
com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
           at 
org.apache.druid.guice.LifecycleScope$1.get(LifecycleScope.java:68)
           at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
           at 
com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
           at 
com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
           at 
com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:402)
           at 
com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
           at 
org.apache.druid.guice.LifecycleScope$1.get(LifecycleScope.java:68)
           at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
           at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
           at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
           at 
com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
           at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
           at 
com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
           at 
com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
           at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
           at 
com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
           at 
com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
           ... 10 more
   ```
   
   ### Affected Version
   
   25.0.0
   
   ### Description
   
   1. Ran the following pull deps and loaded the opentelemetry-emitter
   ```
   java -classpath "/usr/apps/druid/product/current/lib/*" 
org.apache.druid.cli.Main tools pull-deps --clean -c 
org.apache.druid.extensions.contrib:opentelemetry-emitter:25.0.0
   ```
   2. Verified the deps are loaded into the proper folder with the correct jars
   
   ```
   -rwxr-x--- 1 druid druid     4467 Feb 13 10:42 aopalliance-1.0.jar
   -rwxr-x--- 1 druid druid  2228009 Feb 13 10:42 guava-16.0.1.jar
   -rwxr-x--- 1 druid druid   674028 Feb 13 10:42 guice-4.1.0.jar
   -rwxr-x--- 1 druid druid     2497 Feb 13 10:42 javax.inject-1.jar
   -rwxr-x--- 1 druid druid    31866 Feb 13 10:42 jsr305-2.0.1.jar
   -rwxr-x--- 1 druid druid 12881713 Feb 13 10:42 
opentelemetry-emitter-25.0.0.jar
   -rwxr-x--- 1 druid druid     6385 Feb 13 10:42 perfmark-api-0.23.0.jar
   ```
   
   3. Configuration in common.runtime.properties
   
   ```
   druid.extensions.loadList=["druid-orc-extensions", 
"druid-protobuf-extensions", "druid-parquet-extensions", 
"opentelemetry-emitter", "prometheus-emitter", "druid-s3-extensions", 
"druid-kafka-indexing-service", "druid-datasketches", "mysql-metadata-storage", 
"druid-basic-security", "druid-avro-extensions", "druid-stats", 
"druid-kafka-extraction-namespace", "druid-lookups-cached-global", 
"druid-lookups-cached-single", "druid-multi-stage-query"]
   
   
druid.monitoring.monitors=["org.apache.druid.java.util.metrics.JvmMonitor","org.apache.druid.java.util.metrics.JvmCpuMonitor","org.apache.druid.java.util.metrics.JvmThreadsMonitor"]
   druid.emitter=composing
   druid.emitter.composing.emitters=["prometheus","opentelemetry"]
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to