Skip to content

Conversation

@wangyum
Copy link
Member

@wangyum wangyum commented Dec 24, 2020

What changes were proposed in this pull request?

This pr fix guice compatibility issues.

Exception in thread "main" java.lang.NoSuchMethodError: com.google.inject.util.Types.collectionOf(Ljava/lang/reflect/Type;)Ljava/lang/reflect/ParameterizedType;
» at com.google.inject.multibindings.Multibinder.collectionOfProvidersOf(Multibinder.java:202)
» at com.google.inject.multibindings.Multibinder$RealMultibinder.<init>(Multibinder.java:283)
» at com.google.inject.multibindings.Multibinder$RealMultibinder.<init>(Multibinder.java:258)

druid dependency guice 4.1.0:

<druid.guice.version>4.1.0</druid.guice.version>

hadoop dependency guice 4.0.0:
https://github.com/apache/hadoop/blob/release-3.1.0-RC1/hadoop-project/pom.xml#L92

https://github.com/google/guice/blob/4.1/core/src/com/google/inject/util/Types.java#L110-L112
https://github.com/google/guice/blob/4.0/core/src/com/google/inject/util/Types.java

Why are the changes needed?

Fix compatibility issues.

Does this PR introduce any user-facing change?

No.

How was this patch tested?

N/A.

@wangyum
Copy link
Member Author

wangyum commented Dec 24, 2020

@sunchao @iemejia

@sunchao
Copy link
Member

sunchao commented Dec 24, 2020

Thanks @wangyum ! I tried your PR and now seeing this failure on my local laptop:

[DEBUG] 2020-12-23 23:03:36.046 [main] GzipHandler - org.eclipse.jetty.server.handler.gzip.GzipHandler@2a8e30e3 mime types IncludeExclude@31c56721{i=[],ip=org.eclipse.jetty.util.                  IncludeExcludeSet$SetContainsPredicate@4cd51e4e,e=[image/ief, image/vnd.wap.wbmp, image/jpeg, application/bzip2, image/x-portable-graymap, image/bmp, image/gif, image/x-icon, audio/midi, video/x- msvideo, image/x-xbitmap, application/x-rar-compressed, image/x-portable-bitmap, image/x-rgb, image/x-cmu-raster, application/gzip, audio/x-wav, audio/basic, audio/x-pn-realaudio, application/    compress, audio/x-aiff, video/x.ms.asx, video/x.ms.asf, image/png, video/vnd.rn-realvideo, image/x-xwindowdump, image/jpeg2000, video/x-sgi-movie, audio/mpeg, image/xcf, video/mpeg, image/x-      portable-pixmap, image/tiff, image/x-portable-anymap, image/x-xpixmap, application/zip, video/quicktime],ep=org.eclipse.jetty.util.IncludeExcludeSet$SetContainsPredicate@7e451790}
[ERROR] 2020-12-23 23:03:36.049 [main] CliBroker - Error when starting up.  Failing.
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error in custom provider, java.lang.NoSuchMethodError: 'void org.eclipse.jetty.server.handler.gzip.GzipHandler.setInflateBufferSize(int)'
  at org.apache.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:164) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.    Modules$OverrideModule -> org.apache.druid.server.initialization.jetty.JettyServerModule)
  at org.apache.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:164) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.    Modules$OverrideModule -> org.apache.druid.server.initialization.jetty.JettyServerModule)
  while locating org.eclipse.jetty.server.Server

1 error
» at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1028) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1050) ~[guice-4.1.0.jar:?]
» at org.apache.druid.guice.LifecycleModule$2.start(LifecycleModule.java:141) ~[druid-core-0.17.1.jar:0.17.1]
» at org.apache.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:115) [druid-services-0.17.1.jar:0.17.1]
» at org.apache.druid.cli.ServerRunnable.run(ServerRunnable.java:59) [druid-services-0.17.1.jar:0.17.1]
» at org.apache.druid.cli.Main.main(Main.java:113) [druid-services-0.17.1.jar:0.17.1]
Caused by: java.lang.NoSuchMethodError: 'void org.eclipse.jetty.server.handler.gzip.GzipHandler.setInflateBufferSize(int)'
» at org.apache.druid.server.initialization.jetty.JettyServerInitUtils.wrapWithDefaultGzipHandler(JettyServerInitUtils.java:46) ~[druid-server-0.17.1.jar:0.17.1]
» at org.apache.druid.cli.QueryJettyServerInitializer.initialize(QueryJettyServerInitializer.java:137) ~[druid-services-0.17.1.jar:0.17.1]
» at org.apache.druid.server.initialization.jetty.JettyServerModule.makeAndInitializeServer(JettyServerModule.java:394) ~[druid-server-0.17.1.jar:0.17.1]
» at org.apache.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:164) ~[druid-server-0.17.1.jar:0.17.1]
» at org.apache.druid.server.initialization.jetty.JettyServerModule$$FastClassByGuice$$ff9924d8.invoke(<generated>) ~[druid-server-0.17.1.jar:0.17.1]
» at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085) ~[guice-4.1.0.jar:?]
» at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015) ~[guice-4.1.0.jar:?]
» ... 5 more
[DEBUG] 2020-12-23 23:03:36.054 [Thread-1] ShutdownHookManager - ShutdownHookManger complete shutdown.

@iemejia
Copy link
Member

iemejia commented Dec 24, 2020

avro-mapred depends on a different servlet version so maybe it is accidentally excluded.
I updated #1635 with this change and it is now passing the itests locally, let's see if anything new appears.

@wangyum
Copy link
Member Author

wangyum commented Dec 24, 2020

May be we need to upgrade jetty: https://issues.apache.org/jira/browse/HIVE-21961

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants