Skip to content

HIVE-24568: Fix guice compatibility issues #1812

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

Closed
wants to merge 2 commits into from

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