Skip to content

Conversation

@alprusty
Copy link
Contributor

@alprusty alprusty commented Jun 2, 2024

Description

OpenLineage event listener fails to initialize with HTTP transport

Additional context and related issues

2024-06-02 00:35:10 2024-06-02T07:35:10.985Z    INFO    main    io.trino.eventlistener.EventListenerManager     -- Loading event listener etc/openlineage-event-listener.properties --
2024-06-02 00:35:11 2024-06-02T07:35:11.031Z    INFO    main    org.hibernate.validator.internal.util.Version   HV000001: Hibernate Validator 8.0.1.Final
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       PROPERTY                                              DEFAULT                                                                RUNTIME                                                                DESCRIPTION
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.disabled-facets            []                                                                     []                                                                     Which facets should be removed from OpenLineage events.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.trino.include-query-types  [ALTER_TABLE_EXECUTE, DELETE, INSERT, MERGE, UPDATE, DATA_DEFINITION]  [ALTER_TABLE_EXECUTE, DELETE, INSERT, MERGE, UPDATE, DATA_DEFINITION]  Which query types emitted by Trino should generate OpenLineage events. Other query types will be filtered out.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.namespace                  ----                                                                   dataplatform.trino                                                     Override default namespace for job facet.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.type             CONSOLE                                                                HTTP                                                                   Type of transport used to emit lineage information.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.trino.uri                  ----                                                                   http://example.com                                                     URI of trino server. Used for namespace rendering.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.api-key          [REDACTED]                                                             [REDACTED]                                                             API Key to use when authenticating against OpenLineage API
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.endpoint         ----                                                                   ----                                                                   Custom path for API receiving the events.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.headers          {}                                                                     {}                                                                     List of custom custom HTTP headers provided as: "Header-Name-1: header value 1, Header-Value-2: header value 2, ..."
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.timeout          5000.00ms                                                              5000.00ms                                                              Timeout when making HTTP Requests.
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.url              ----                                                                   http://localhost:5000                                                  URL of receiving server. Explicitly set the scheme https:// to use symmetric encryption
2024-06-02 00:35:11 2024-06-02T07:35:11.168Z    INFO    main    Bootstrap       openlineage-event-listener.transport.url-params       {}                                                                     {}                                                                     List of custom custom url params provided as: "url-param-1: url param value 1, ..."
2024-06-02 00:35:11 2024-06-02T07:35:11.255Z    WARN    main    com.google.inject.internal.util.LineNumbers     Failed loading line numbers. ASM is probably out of date. Further failures won't be logged.
2024-06-02 00:35:11 java.lang.IllegalArgumentException: Unsupported class file major version 66
2024-06-02 00:35:11     at com.google.inject.internal.asm.$ClassReader.<init>(ClassReader.java:199)
2024-06-02 00:35:11     at com.google.inject.internal.asm.$ClassReader.<init>(ClassReader.java:180)
2024-06-02 00:35:11     at com.google.inject.internal.asm.$ClassReader.<init>(ClassReader.java:166)
2024-06-02 00:35:11     at com.google.inject.internal.asm.$ClassReader.<init>(ClassReader.java:287)
2024-06-02 00:35:11     at com.google.inject.internal.util.LineNumbers.<init>(LineNumbers.java:74)
2024-06-02 00:35:11     at com.google.inject.internal.util.StackTraceElements$1.load(StackTraceElements.java:48)
2024-06-02 00:35:11     at com.google.inject.internal.util.StackTraceElements$1.load(StackTraceElements.java:44)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache.get(LocalCache.java:4019)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4042)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5024)
2024-06-02 00:35:11     at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5031)
2024-06-02 00:35:11     at com.google.inject.internal.util.StackTraceElements.forMember(StackTraceElements.java:67)
2024-06-02 00:35:11     at com.google.inject.internal.SourceFormatter.formatMember(SourceFormatter.java:91)
2024-06-02 00:35:11     at com.google.inject.internal.SourceFormatter.format(SourceFormatter.java:53)
2024-06-02 00:35:11     at com.google.inject.internal.GenericErrorDetail.formatDetail(GenericErrorDetail.java:26)
2024-06-02 00:35:11     at com.google.inject.spi.ErrorDetail.format(ErrorDetail.java:64)
2024-06-02 00:35:11     at com.google.inject.internal.Messages.formatMessages(Messages.java:90)
2024-06-02 00:35:11     at com.google.inject.CreationException.getMessage(CreationException.java:50)
2024-06-02 00:35:11     at io.airlift.log.Logger.error(Logger.java:272)
2024-06-02 00:35:11     at io.trino.server.Server.doStart(Server.java:205)
2024-06-02 00:35:11     at io.trino.server.Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at io.trino.server.Server.start(Server.java:93)
2024-06-02 00:35:11     at io.trino.server.TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 
2024-06-02 00:35:11 
2024-06-02 00:35:11 2024-06-02T07:35:11.269Z    ERROR   main    io.trino.server.Server  Unable to create injector, see the following errors:
2024-06-02 00:35:11 
2024-06-02 00:35:11 1) [Guice/ErrorInCustomProvider]: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11   at OpenLineageListenerModule.getClient(Unknown Source)
2024-06-02 00:35:11   while locating OpenLineageClient
2024-06-02 00:35:11 
2024-06-02 00:35:11 Learn more:
2024-06-02 00:35:11   https://github.com/google/guice/wiki/ERROR_IN_CUSTOM_PROVIDER
2024-06-02 00:35:11 Caused by: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11     at HttpTransport.getUri(HttpTransport.java:94)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:79)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:50)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:76)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:29)
2024-06-02 00:35:11     at OpenLineageListenerModule.getClient(OpenLineageListenerModule.java:65)
2024-06-02 00:35:11     at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11     at java.base/Method.invoke(Method.java:580)
2024-06-02 00:35:11     at ProviderMethod$ReflectionProviderMethod.doProvision(ProviderMethod.java:284)
2024-06-02 00:35:11     at ProviderMethod.doProvision(ProviderMethod.java:171)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.provision(InternalProviderInstanceBindingImpl.java:185)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.access$300(InternalProviderInstanceBindingImpl.java:139)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory$1.call(InternalProviderInstanceBindingImpl.java:169)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.get(InternalProviderInstanceBindingImpl.java:164)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
2024-06-02 00:35:11     at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186)
2024-06-02 00:35:11     at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
2024-06-02 00:35:11     at Guice.createInjector(Guice.java:87)
2024-06-02 00:35:11     at Bootstrap.initialize(Bootstrap.java:264)
2024-06-02 00:35:11     at OpenLineageListenerFactory.create(OpenLineageListenerFactory.java:41)
2024-06-02 00:35:11     at EventListenerManager.createEventListener(EventListenerManager.java:127)
2024-06-02 00:35:11     at java.base/ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
2024-06-02 00:35:11     at java.base/Collections$2.tryAdvance(Collections.java:5074)
2024-06-02 00:35:11     at java.base/Collections$2.forEachRemaining(Collections.java:5082)
2024-06-02 00:35:11     at java.base/AbstractPipeline.copyInto(AbstractPipeline.java:556)
2024-06-02 00:35:11     at java.base/AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
2024-06-02 00:35:11     at java.base/ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2024-06-02 00:35:11     at java.base/AbstractPipeline.evaluate(AbstractPipeline.java:265)
2024-06-02 00:35:11     at java.base/ReferencePipeline.collect(ReferencePipeline.java:702)
2024-06-02 00:35:11     at EventListenerManager.configuredEventListeners(EventListenerManager.java:110)
2024-06-02 00:35:11     at EventListenerManager.loadEventListeners(EventListenerManager.java:95)
2024-06-02 00:35:11     at Server.doStart(Server.java:176)
2024-06-02 00:35:11     at Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at Server.start(Server.java:93)
2024-06-02 00:35:11     at TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 Caused by: ClassNotFoundException: StringUtils
2024-06-02 00:35:11     at java.base/URLClassLoader.findClass(URLClassLoader.java:445)
2024-06-02 00:35:11     at java.base/ClassLoader.loadClass(ClassLoader.java:592)
2024-06-02 00:35:11     at PluginClassLoader.loadClass(PluginClassLoader.java:106)
2024-06-02 00:35:11     at java.base/ClassLoader.loadClass(ClassLoader.java:525)
2024-06-02 00:35:11     ... 43 more
2024-06-02 00:35:11 
2024-06-02 00:35:11 2) [Guice/ErrorInCustomProvider]: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11   at OpenLineageListenerModule.getClient(Unknown Source)
2024-06-02 00:35:11   at OpenLineageListener.<init>(Unknown Source)
2024-06-02 00:35:11       \_ for 1st parameter client
2024-06-02 00:35:11   at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11   while locating OpenLineageListener
2024-06-02 00:35:11 
2024-06-02 00:35:11 Learn more:
2024-06-02 00:35:11   https://github.com/google/guice/wiki/ERROR_IN_CUSTOM_PROVIDER
2024-06-02 00:35:11 Caused by: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11     at HttpTransport.getUri(HttpTransport.java:94)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:79)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:50)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:76)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:29)
2024-06-02 00:35:11     at OpenLineageListenerModule.getClient(OpenLineageListenerModule.java:65)
2024-06-02 00:35:11     at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11     at java.base/Method.invoke(Method.java:580)
2024-06-02 00:35:11     at ProviderMethod$ReflectionProviderMethod.doProvision(ProviderMethod.java:284)
2024-06-02 00:35:11     at ProviderMethod.doProvision(ProviderMethod.java:171)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.provision(InternalProviderInstanceBindingImpl.java:185)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.access$300(InternalProviderInstanceBindingImpl.java:139)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory$1.call(InternalProviderInstanceBindingImpl.java:169)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.get(InternalProviderInstanceBindingImpl.java:164)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at SingleParameterInjector.inject(SingleParameterInjector.java:40)
2024-06-02 00:35:11     at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
2024-06-02 00:35:11     at ConstructorInjector.provision(ConstructorInjector.java:113)
2024-06-02 00:35:11     at ConstructorInjector.access$000(ConstructorInjector.java:33)
2024-06-02 00:35:11     at ConstructorInjector$1.call(ConstructorInjector.java:98)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at ConstructorInjector.construct(ConstructorInjector.java:93)
2024-06-02 00:35:11     at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
2024-06-02 00:35:11     at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186)
2024-06-02 00:35:11     at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
2024-06-02 00:35:11     at Guice.createInjector(Guice.java:87)
2024-06-02 00:35:11     at Bootstrap.initialize(Bootstrap.java:264)
2024-06-02 00:35:11     at OpenLineageListenerFactory.create(OpenLineageListenerFactory.java:41)
2024-06-02 00:35:11     at EventListenerManager.createEventListener(EventListenerManager.java:127)
2024-06-02 00:35:11     at java.base/ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
2024-06-02 00:35:11     at java.base/Collections$2.tryAdvance(Collections.java:5074)
2024-06-02 00:35:11     at java.base/Collections$2.forEachRemaining(Collections.java:5082)
2024-06-02 00:35:11     at java.base/AbstractPipeline.copyInto(AbstractPipeline.java:556)
2024-06-02 00:35:11     at java.base/AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
2024-06-02 00:35:11     at java.base/ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2024-06-02 00:35:11     at java.base/AbstractPipeline.evaluate(AbstractPipeline.java:265)
2024-06-02 00:35:11     at java.base/ReferencePipeline.collect(ReferencePipeline.java:702)
2024-06-02 00:35:11     at EventListenerManager.configuredEventListeners(EventListenerManager.java:110)
2024-06-02 00:35:11     at EventListenerManager.loadEventListeners(EventListenerManager.java:95)
2024-06-02 00:35:11     at Server.doStart(Server.java:176)
2024-06-02 00:35:11     at Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at Server.start(Server.java:93)
2024-06-02 00:35:11     at TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 Caused by: ClassNotFoundException: StringUtils
2024-06-02 00:35:11     ... 57 more
2024-06-02 00:35:11 
2024-06-02 00:35:11 2 errors
2024-06-02 00:35:11 
2024-06-02 00:35:11 ======================
2024-06-02 00:35:11 Full classname legend:
2024-06-02 00:35:11 ======================
2024-06-02 00:35:11 AbstractPipeline:                                    "java.util.stream.AbstractPipeline"
2024-06-02 00:35:11 Bootstrap:                                           "io.airlift.bootstrap.Bootstrap"
2024-06-02 00:35:11 ConstructorBindingImpl$Factory:                      "com.google.inject.internal.ConstructorBindingImpl$Factory"
2024-06-02 00:35:11 ConstructorInjector:                                 "com.google.inject.internal.ConstructorInjector"
2024-06-02 00:35:11 ConstructorInjector$1:                               "com.google.inject.internal.ConstructorInjector$1"
2024-06-02 00:35:11 DirectMethodHandleAccessor:                          "jdk.internal.reflect.DirectMethodHandleAccessor"
2024-06-02 00:35:11 EventListenerManager:                                "io.trino.eventlistener.EventListenerManager"
2024-06-02 00:35:11 Guice:                                               "com.google.inject.Guice"
2024-06-02 00:35:11 HttpTransport:                                       "io.openlineage.client.transports.HttpTransport"
2024-06-02 00:35:11 InternalFactoryToProviderAdapter:                    "com.google.inject.internal.InternalFactoryToProviderAdapter"
2024-06-02 00:35:11 InternalInjectorCreator:                             "com.google.inject.internal.InternalInjectorCreator"
2024-06-02 00:35:11 InternalProviderInstanceBindingImpl$CyclicFactory:   "com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory"
2024-06-02 00:35:11 InternalProviderInstanceBindingImpl$CyclicFactory$1: "com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory$1"
2024-06-02 00:35:11 LifeCycleModule:                                     "io.airlift.bootstrap.LifeCycleModule"
2024-06-02 00:35:11 Method:                                              "java.lang.reflect.Method"
2024-06-02 00:35:11 OpenLineageClient:                                   "io.openlineage.client.OpenLineageClient"
2024-06-02 00:35:11 OpenLineageHttpTransport:                            "io.trino.plugin.openlineage.transport.http.OpenLineageHttpTransport"
2024-06-02 00:35:11 OpenLineageListener:                                 "io.trino.plugin.openlineage.OpenLineageListener"
2024-06-02 00:35:11 OpenLineageListenerFactory:                          "io.trino.plugin.openlineage.OpenLineageListenerFactory"
2024-06-02 00:35:11 OpenLineageListenerModule:                           "io.trino.plugin.openlineage.OpenLineageListenerModule"
2024-06-02 00:35:11 PluginClassLoader:                                   "io.trino.server.PluginClassLoader"
2024-06-02 00:35:11 ProviderMethod:                                      "com.google.inject.internal.ProviderMethod"
2024-06-02 00:35:11 ProviderMethod$ReflectionProviderMethod:             "com.google.inject.internal.ProviderMethod$ReflectionProviderMethod"
2024-06-02 00:35:11 ProviderToInternalFactoryAdapter:                    "com.google.inject.internal.ProviderToInternalFactoryAdapter"
2024-06-02 00:35:11 ProvisionListenerStackCallback:                      "com.google.inject.internal.ProvisionListenerStackCallback"
2024-06-02 00:35:11 ProvisionListenerStackCallback$Provision:            "com.google.inject.internal.ProvisionListenerStackCallback$Provision"
2024-06-02 00:35:11 ReduceOps$ReduceOp:                                  "java.util.stream.ReduceOps$ReduceOp"
2024-06-02 00:35:11 ReferencePipeline:                                   "java.util.stream.ReferencePipeline"
2024-06-02 00:35:11 ReferencePipeline$3$1:                               "java.util.stream.ReferencePipeline$3$1"
2024-06-02 00:35:11 Server:                                              "io.trino.server.Server"
2024-06-02 00:35:11 SingleParameterInjector:                             "com.google.inject.internal.SingleParameterInjector"
2024-06-02 00:35:11 SingletonScope$1:                                    "com.google.inject.internal.SingletonScope$1"
2024-06-02 00:35:11 StringUtils:                                         "org.apache.commons.lang3.StringUtils"
2024-06-02 00:35:11 TrinoServer:                                         "io.trino.server.TrinoServer"
2024-06-02 00:35:11 URLClassLoader:                                      "java.net.URLClassLoader"
2024-06-02 00:35:11 ========================
2024-06-02 00:35:11 End of classname legend:
2024-06-02 00:35:11 ========================
2024-06-02 00:35:11 
2024-06-02 00:35:11 com.google.inject.CreationException: Unable to create injector, see the following errors:
2024-06-02 00:35:11 
2024-06-02 00:35:11 1) [Guice/ErrorInCustomProvider]: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11   at OpenLineageListenerModule.getClient(Unknown Source)
2024-06-02 00:35:11   while locating OpenLineageClient
2024-06-02 00:35:11 
2024-06-02 00:35:11 Learn more:
2024-06-02 00:35:11   https://github.com/google/guice/wiki/ERROR_IN_CUSTOM_PROVIDER
2024-06-02 00:35:11 Caused by: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11     at HttpTransport.getUri(HttpTransport.java:94)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:79)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:50)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:76)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:29)
2024-06-02 00:35:11     at OpenLineageListenerModule.getClient(OpenLineageListenerModule.java:65)
2024-06-02 00:35:11     at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11     at java.base/Method.invoke(Method.java:580)
2024-06-02 00:35:11     at ProviderMethod$ReflectionProviderMethod.doProvision(ProviderMethod.java:284)
2024-06-02 00:35:11     at ProviderMethod.doProvision(ProviderMethod.java:171)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.provision(InternalProviderInstanceBindingImpl.java:185)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.access$300(InternalProviderInstanceBindingImpl.java:139)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory$1.call(InternalProviderInstanceBindingImpl.java:169)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.get(InternalProviderInstanceBindingImpl.java:164)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
2024-06-02 00:35:11     at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186)
2024-06-02 00:35:11     at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
2024-06-02 00:35:11     at Guice.createInjector(Guice.java:87)
2024-06-02 00:35:11     at Bootstrap.initialize(Bootstrap.java:264)
2024-06-02 00:35:11     at OpenLineageListenerFactory.create(OpenLineageListenerFactory.java:41)
2024-06-02 00:35:11     at EventListenerManager.createEventListener(EventListenerManager.java:127)
2024-06-02 00:35:11     at java.base/ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
2024-06-02 00:35:11     at java.base/Collections$2.tryAdvance(Collections.java:5074)
2024-06-02 00:35:11     at java.base/Collections$2.forEachRemaining(Collections.java:5082)
2024-06-02 00:35:11     at java.base/AbstractPipeline.copyInto(AbstractPipeline.java:556)
2024-06-02 00:35:11     at java.base/AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
2024-06-02 00:35:11     at java.base/ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2024-06-02 00:35:11     at java.base/AbstractPipeline.evaluate(AbstractPipeline.java:265)
2024-06-02 00:35:11     at java.base/ReferencePipeline.collect(ReferencePipeline.java:702)
2024-06-02 00:35:11     at EventListenerManager.configuredEventListeners(EventListenerManager.java:110)
2024-06-02 00:35:11     at EventListenerManager.loadEventListeners(EventListenerManager.java:95)
2024-06-02 00:35:11     at Server.doStart(Server.java:176)
2024-06-02 00:35:11     at Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at Server.start(Server.java:93)
2024-06-02 00:35:11     at TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 Caused by: ClassNotFoundException: StringUtils
2024-06-02 00:35:11     at java.base/URLClassLoader.findClass(URLClassLoader.java:445)
2024-06-02 00:35:11     at java.base/ClassLoader.loadClass(ClassLoader.java:592)
2024-06-02 00:35:11     at PluginClassLoader.loadClass(PluginClassLoader.java:106)
2024-06-02 00:35:11     at java.base/ClassLoader.loadClass(ClassLoader.java:525)
2024-06-02 00:35:11     ... 43 more
2024-06-02 00:35:11 
2024-06-02 00:35:11 2) [Guice/ErrorInCustomProvider]: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11   at OpenLineageListenerModule.getClient(Unknown Source)
2024-06-02 00:35:11   at OpenLineageListener.<init>(Unknown Source)
2024-06-02 00:35:11       \_ for 1st parameter client
2024-06-02 00:35:11   at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11   while locating OpenLineageListener
2024-06-02 00:35:11 
2024-06-02 00:35:11 Learn more:
2024-06-02 00:35:11   https://github.com/google/guice/wiki/ERROR_IN_CUSTOM_PROVIDER
2024-06-02 00:35:11 Caused by: NoClassDefFoundError: org/apache/commons/lang3/StringUtils
2024-06-02 00:35:11     at HttpTransport.getUri(HttpTransport.java:94)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:79)
2024-06-02 00:35:11     at HttpTransport.<init>(HttpTransport.java:50)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:76)
2024-06-02 00:35:11     at OpenLineageHttpTransport.buildTransport(OpenLineageHttpTransport.java:29)
2024-06-02 00:35:11     at OpenLineageListenerModule.getClient(OpenLineageListenerModule.java:65)
2024-06-02 00:35:11     at java.base/DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
2024-06-02 00:35:11     at java.base/Method.invoke(Method.java:580)
2024-06-02 00:35:11     at ProviderMethod$ReflectionProviderMethod.doProvision(ProviderMethod.java:284)
2024-06-02 00:35:11     at ProviderMethod.doProvision(ProviderMethod.java:171)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.provision(InternalProviderInstanceBindingImpl.java:185)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.access$300(InternalProviderInstanceBindingImpl.java:139)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory$1.call(InternalProviderInstanceBindingImpl.java:169)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at InternalProviderInstanceBindingImpl$CyclicFactory.get(InternalProviderInstanceBindingImpl.java:164)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at SingleParameterInjector.inject(SingleParameterInjector.java:40)
2024-06-02 00:35:11     at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
2024-06-02 00:35:11     at ConstructorInjector.provision(ConstructorInjector.java:113)
2024-06-02 00:35:11     at ConstructorInjector.access$000(ConstructorInjector.java:33)
2024-06-02 00:35:11     at ConstructorInjector$1.call(ConstructorInjector.java:98)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
2024-06-02 00:35:11     at LifeCycleModule.provision(LifeCycleModule.java:53)
2024-06-02 00:35:11     at ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
2024-06-02 00:35:11     at ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
2024-06-02 00:35:11     at ConstructorInjector.construct(ConstructorInjector.java:93)
2024-06-02 00:35:11     at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
2024-06-02 00:35:11     at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2024-06-02 00:35:11     at SingletonScope$1.get(SingletonScope.java:169)
2024-06-02 00:35:11     at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
2024-06-02 00:35:11     at InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
2024-06-02 00:35:11     at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186)
2024-06-02 00:35:11     at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
2024-06-02 00:35:11     at Guice.createInjector(Guice.java:87)
2024-06-02 00:35:11     at Bootstrap.initialize(Bootstrap.java:264)
2024-06-02 00:35:11     at OpenLineageListenerFactory.create(OpenLineageListenerFactory.java:41)
2024-06-02 00:35:11     at EventListenerManager.createEventListener(EventListenerManager.java:127)
2024-06-02 00:35:11     at java.base/ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
2024-06-02 00:35:11     at java.base/Collections$2.tryAdvance(Collections.java:5074)
2024-06-02 00:35:11     at java.base/Collections$2.forEachRemaining(Collections.java:5082)
2024-06-02 00:35:11     at java.base/AbstractPipeline.copyInto(AbstractPipeline.java:556)
2024-06-02 00:35:11     at java.base/AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
2024-06-02 00:35:11     at java.base/ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2024-06-02 00:35:11     at java.base/AbstractPipeline.evaluate(AbstractPipeline.java:265)
2024-06-02 00:35:11     at java.base/ReferencePipeline.collect(ReferencePipeline.java:702)
2024-06-02 00:35:11     at EventListenerManager.configuredEventListeners(EventListenerManager.java:110)
2024-06-02 00:35:11     at EventListenerManager.loadEventListeners(EventListenerManager.java:95)
2024-06-02 00:35:11     at Server.doStart(Server.java:176)
2024-06-02 00:35:11     at Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at Server.start(Server.java:93)
2024-06-02 00:35:11     at TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 Caused by: ClassNotFoundException: StringUtils
2024-06-02 00:35:11     ... 57 more
2024-06-02 00:35:11 
2024-06-02 00:35:11 2 errors
2024-06-02 00:35:11 
2024-06-02 00:35:11 ======================
2024-06-02 00:35:11 Full classname legend:
2024-06-02 00:35:11 ======================
2024-06-02 00:35:11 AbstractPipeline:                                    "java.util.stream.AbstractPipeline"
2024-06-02 00:35:11 Bootstrap:                                           "io.airlift.bootstrap.Bootstrap"
2024-06-02 00:35:11 ConstructorBindingImpl$Factory:                      "com.google.inject.internal.ConstructorBindingImpl$Factory"
2024-06-02 00:35:11 ConstructorInjector:                                 "com.google.inject.internal.ConstructorInjector"
2024-06-02 00:35:11 ConstructorInjector$1:                               "com.google.inject.internal.ConstructorInjector$1"
2024-06-02 00:35:11 DirectMethodHandleAccessor:                          "jdk.internal.reflect.DirectMethodHandleAccessor"
2024-06-02 00:35:11 EventListenerManager:                                "io.trino.eventlistener.EventListenerManager"
2024-06-02 00:35:11 Guice:                                               "com.google.inject.Guice"
2024-06-02 00:35:11 HttpTransport:                                       "io.openlineage.client.transports.HttpTransport"
2024-06-02 00:35:11 InternalFactoryToProviderAdapter:                    "com.google.inject.internal.InternalFactoryToProviderAdapter"
2024-06-02 00:35:11 InternalInjectorCreator:                             "com.google.inject.internal.InternalInjectorCreator"
2024-06-02 00:35:11 InternalProviderInstanceBindingImpl$CyclicFactory:   "com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory"
2024-06-02 00:35:11 InternalProviderInstanceBindingImpl$CyclicFactory$1: "com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory$1"
2024-06-02 00:35:11 LifeCycleModule:                                     "io.airlift.bootstrap.LifeCycleModule"
2024-06-02 00:35:11 Method:                                              "java.lang.reflect.Method"
2024-06-02 00:35:11 OpenLineageClient:                                   "io.openlineage.client.OpenLineageClient"
2024-06-02 00:35:11 OpenLineageHttpTransport:                            "io.trino.plugin.openlineage.transport.http.OpenLineageHttpTransport"
2024-06-02 00:35:11 OpenLineageListener:                                 "io.trino.plugin.openlineage.OpenLineageListener"
2024-06-02 00:35:11 OpenLineageListenerFactory:                          "io.trino.plugin.openlineage.OpenLineageListenerFactory"
2024-06-02 00:35:11 OpenLineageListenerModule:                           "io.trino.plugin.openlineage.OpenLineageListenerModule"
2024-06-02 00:35:11 PluginClassLoader:                                   "io.trino.server.PluginClassLoader"
2024-06-02 00:35:11 ProviderMethod:                                      "com.google.inject.internal.ProviderMethod"
2024-06-02 00:35:11 ProviderMethod$ReflectionProviderMethod:             "com.google.inject.internal.ProviderMethod$ReflectionProviderMethod"
2024-06-02 00:35:11 ProviderToInternalFactoryAdapter:                    "com.google.inject.internal.ProviderToInternalFactoryAdapter"
2024-06-02 00:35:11 ProvisionListenerStackCallback:                      "com.google.inject.internal.ProvisionListenerStackCallback"
2024-06-02 00:35:11 ProvisionListenerStackCallback$Provision:            "com.google.inject.internal.ProvisionListenerStackCallback$Provision"
2024-06-02 00:35:11 ReduceOps$ReduceOp:                                  "java.util.stream.ReduceOps$ReduceOp"
2024-06-02 00:35:11 ReferencePipeline:                                   "java.util.stream.ReferencePipeline"
2024-06-02 00:35:11 ReferencePipeline$3$1:                               "java.util.stream.ReferencePipeline$3$1"
2024-06-02 00:35:11 Server:                                              "io.trino.server.Server"
2024-06-02 00:35:11 SingleParameterInjector:                             "com.google.inject.internal.SingleParameterInjector"
2024-06-02 00:35:11 SingletonScope$1:                                    "com.google.inject.internal.SingletonScope$1"
2024-06-02 00:35:11 StringUtils:                                         "org.apache.commons.lang3.StringUtils"
2024-06-02 00:35:11 TrinoServer:                                         "io.trino.server.TrinoServer"
2024-06-02 00:35:11 URLClassLoader:                                      "java.net.URLClassLoader"
2024-06-02 00:35:11 ========================
2024-06-02 00:35:11 End of classname legend:
2024-06-02 00:35:11 ========================
2024-06-02 00:35:11 
2024-06-02 00:35:11     at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:589)
2024-06-02 00:35:11     at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:190)
2024-06-02 00:35:11     at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113)
2024-06-02 00:35:11     at com.google.inject.Guice.createInjector(Guice.java:87)
2024-06-02 00:35:11     at io.airlift.bootstrap.Bootstrap.initialize(Bootstrap.java:264)
2024-06-02 00:35:11     at io.trino.plugin.openlineage.OpenLineageListenerFactory.create(OpenLineageListenerFactory.java:41)
2024-06-02 00:35:11     at io.trino.eventlistener.EventListenerManager.createEventListener(EventListenerManager.java:127)
2024-06-02 00:35:11     at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
2024-06-02 00:35:11     at java.base/java.util.Collections$2.tryAdvance(Collections.java:5074)
2024-06-02 00:35:11     at java.base/java.util.Collections$2.forEachRemaining(Collections.java:5082)
2024-06-02 00:35:11     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
2024-06-02 00:35:11     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
2024-06-02 00:35:11     at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2024-06-02 00:35:11     at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
2024-06-02 00:35:11     at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:702)
2024-06-02 00:35:11     at io.trino.eventlistener.EventListenerManager.configuredEventListeners(EventListenerManager.java:110)
2024-06-02 00:35:11     at io.trino.eventlistener.EventListenerManager.loadEventListeners(EventListenerManager.java:95)
2024-06-02 00:35:11     at io.trino.server.Server.doStart(Server.java:176)
2024-06-02 00:35:11     at io.trino.server.Server.lambda$start$0(Server.java:93)
2024-06-02 00:35:11     at io.trino.$gen.Trino_449____20240602_073501_1.run(Unknown Source)
2024-06-02 00:35:11     at io.trino.server.Server.start(Server.java:93)
2024-06-02 00:35:11     at io.trino.server.TrinoServer.main(TrinoServer.java:37)
2024-06-02 00:35:11 
2024-06-02 00:35:11 
2024-06-02 00:35:11 2024-06-02T07:35:11.273Z    INFO    Thread-76       io.airlift.bootstrap.LifeCycleManager   JVM is shutting down, cleaning up
2024-06-02 00:35:11 2024-06-02T07:35:11.273Z    INFO    Thread-78       io.airlift.bootstrap.LifeCycleManager   JVM is shutting down, cleaning up
2024-06-02 00:35:11 2024-06-02T07:35:11.274Z    INFO    Thread-79       io.airlift.bootstrap.LifeCycleManager   JVM is shutting down, cleaning up

This event listener depends on openlineage-java which depends on org.apache.commons.lang3.StringUtils. However there is no runtime dependency defined on commons.lang3, hence it is failing in runtime.

It is working on the Test because we have a test scope dependency on testcontainers which pulls commons.lang3 (see the truncated test dependency tree below)

[INFO] \- org.testcontainers:testcontainers:jar:1.19.8:test
[INFO]    +- junit:junit:jar:4.13.2:test
[INFO]    |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO]    +- org.apache.commons:commons-compress:jar:1.26.2:test
[INFO]    |  +- commons-io:commons-io:jar:2.16.1:test
[INFO]    |  \- org.apache.commons:commons-lang3:jar:3.14.0:test

Release notes

( ) Release notes are required, with the following suggested text:

# OpenLineage
* Fix failure when loading the plugin. ({issue}`22228`)

The dependency is required for openlineage-java.
@ebyhr ebyhr force-pushed the fix-ol-http-transport branch from 8681d42 to a2668ac Compare June 2, 2024 11:37
@ebyhr ebyhr merged commit 947bd10 into trinodb:master Jun 2, 2024
@github-actions github-actions bot added this to the 450 milestone Jun 2, 2024
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<scope>runtime</scope>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typically runtime dependencies are not needed. So ideally there could be a code comment saying why this one is needed. BTW the fact we need to manually add this is an effect of incorrect exclude somewhere else?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants