Skip to content

Update to guice 4.0#1608

Merged
xvrl merged 2 commits intoapache:masterfrom
metamx:guice40
Aug 10, 2015
Merged

Update to guice 4.0#1608
xvrl merged 2 commits intoapache:masterfrom
metamx:guice40

Conversation

@drcrallen
Copy link
Copy Markdown
Contributor

  • Mark a lot of @Provides methods as final since guice 4.0 disallows overriding them

@drcrallen drcrallen closed this Aug 7, 2015
@drcrallen drcrallen reopened this Aug 7, 2015
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

should we mark this method as to be used for testing only

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

fixed

@xvrl
Copy link
Copy Markdown
Member

xvrl commented Aug 7, 2015

minor comment, but LGTM otherwise

@nishantmonu51
Copy link
Copy Markdown
Member

👍

@xvrl
Copy link
Copy Markdown
Member

xvrl commented Aug 8, 2015

@drcrallen we should also update guice version in druid-api while we're at it for consistency, and update druid-api version

@drcrallen
Copy link
Copy Markdown
Contributor Author

@xvrl : druid-io/druid-api#51

@xvrl
Copy link
Copy Markdown
Member

xvrl commented Aug 10, 2015

Sounds good, we can merge this as soon as druid-api with updated guice is released, and druid-api version has been updated in this PR.

@xvrl xvrl modified the milestone: 0.8.1 Aug 10, 2015
 - Mark a lot of `@Provides` methods as final since guice 4.0 disallows overriding them
@drcrallen
Copy link
Copy Markdown
Contributor Author

build is expected to fail until the release for druid-api finishes.

@drcrallen
Copy link
Copy Markdown
Contributor Author

@xvrl travis is passing here.

xvrl added a commit that referenced this pull request Aug 10, 2015
@xvrl xvrl merged commit fadd8a4 into apache:master Aug 10, 2015
@xvrl xvrl deleted the guice40 branch August 10, 2015 22:00
@himanshug
Copy link
Copy Markdown
Contributor

@drcrallen not certain but this PR seems to be causing following exception in hadoop batch ingestion (I'm using hadoop-2.6)
(com.google.inject.spi.ProviderInstanceBinding.getUserSuppliedProvider() was introduced in guice-4.0)

1) Error injecting method, java.lang.NoSuchMethodError: com.google.inject.spi.ProviderInstanceBinding.getUserSuppliedProvider()Ljavax/inject/Provider;
  at com.google.inject.multibindings.Multibinder$RealMultibinder.initialize(Multibinder.java:324)
  at io.druid.guice.PolyBind.optionBinder(PolyBind.java:113)
  while locating java.util.Set<java.util.Map$Entry<java.lang.String, com.google.inject.Provider<io.druid.metadata.MetadataSegmentPublisher>>>
  at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:461)
  at io.druid.guice.PolyBind.optionBinder(PolyBind.java:113)
Caused by: java.lang.NoSuchMethodError: com.google.inject.spi.ProviderInstanceBinding.getUserSuppliedProvider()Ljavax/inject/Provider;
    at com.google.inject.multibindings.Indexer.visit(Indexer.java:139)
    at com.google.inject.multibindings.Indexer.visit(Indexer.java:43)
    at com.google.inject.internal.ProviderInstanceBindingImpl.acceptTargetVisitor(ProviderInstanceBindingImpl.java:62)
    at com.google.inject.multibindings.Multibinder$RealMultibinder.initialize(Multibinder.java:332)
    at com.google.inject.multibindings.Multibinder$RealMultibinder$$FastClassByGuice$$94efefc8.invoke(<generated>)
    at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53)
    at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56)
    at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90)
    at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)
    at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:89)
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:89)
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:89)
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:469)
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider$$FastClassByGuice$$7fff4848.invoke(<generated>)
    at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53)
    at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56)
    at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90)
    at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
    at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)
    at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147)
    at com.google.inject.internal.Initializer.injectAll(Initializer.java:92)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:173)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
    at com.google.inject.Guice.createInjector(Guice.java:95)
    at com.google.inject.Guice.createInjector(Guice.java:72)
    at com.google.inject.Guice.createInjector(Guice.java:62)
    at io.druid.initialization.Initialization.makeInjectorWithModules(Initialization.java:412)
    at io.druid.indexer.HadoopDruidIndexerConfig.<clinit>(HadoopDruidIndexerConfig.java:93)
    at io.druid.indexer.DetermineHashedPartitionsJob$DetermineHashedPartitionsPartitioner.setConf(DetermineHashedPartitionsJob.java:393)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
    at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:698)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:767)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

are you successfully being able to run hadoop ingestion after this update?

@drcrallen
Copy link
Copy Markdown
Contributor Author

@himanshug Using my simple test of index hadoop index-test.json through my IntelliJ setup seems to work fine. Still investigating to see if the indexing service has something weird with this update

@drcrallen
Copy link
Copy Markdown
Contributor Author

@himanshug Specifying "hadoopCoordinates": "org.apache.hadoop:hadoop-client:2.6.0" seems to be working locally. for the indexing service

@himanshug
Copy link
Copy Markdown
Contributor

@drcrallen hmmm, not sure yet, but I have a hadoop-2.6 cluster deployed . ran druid processes with hadoop classpath output and hdfs-storage on classpath. doing the ingestion using HadoopIndexTask via overlord and it failed on me, removing the 2 commits from this PR solved the problem.

@xvrl
Copy link
Copy Markdown
Member

xvrl commented Aug 12, 2015

@himanshug can you make sure nothing in your build or extensions is pulling in an older version of guice? This seems like somewhere on your classpath an older version of guice got pulled in.

@himanshug
Copy link
Copy Markdown
Contributor

@xvrl that is true, "hadoop classpath" would include guice jar bundled with hadoop deployment, which will be guice-3.0 .
I think, probably I'm facing the issue because both guice-4.0 and guice-3.0 are ending up being on the classpath. In this case I'm using druid-services-0.8.1-SNAPSHOT-selfcontained.jar which will have guice-4.0 classes inside it.

@drcrallen
Copy link
Copy Markdown
Contributor Author

@himanshug Showed up in our dogfood cluster. Reverting until IT can be fixed to catch issue.

@himanshug
Copy link
Copy Markdown
Contributor

@drcrallen makes sense to revert till we figure out the root cause.

@drcrallen drcrallen mentioned this pull request Jul 6, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants