dyno icon indicating copy to clipboard operation
dyno copied to clipboard

ArrayIndexOutOfBoundsException in HostUtils.calculateReplicationFactorForDC

Open skissane opened this issue 5 years ago • 4 comments

I am using Dyno 1.7.2-rc2 as a dependency of Netflix Conductor v2.24.2. I am getting this error:

Exception in thread "main" com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error in custom provider, java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 0
  while locating com.netflix.conductor.jedis.DynomiteJedisProvider
  at com.netflix.conductor.server.DynomiteClusterModule.configure(DynomiteClusterModule.java:35) (via modules: com.google.inject.util.Modules$OverrideModule -> com.netflix.conductor.server.DynomiteClusterModule)
  while locating redis.clients.jedis.commands.JedisCommands
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 0
	at com.netflix.dyno.jedis.DynoJedisUtils.startConnectionPool(DynoJedisUtils.java:83)
	at com.netflix.dyno.jedis.DynoJedisUtils.createConnectionPool(DynoJedisUtils.java:60)
	at com.netflix.dyno.jedis.DynoJedisClient$Builder.buildDynoJedisClient(DynoJedisClient.java:4869)
	at com.netflix.dyno.jedis.DynoJedisClient$Builder.build(DynoJedisClient.java:4797)
	at com.netflix.conductor.jedis.DynomiteJedisProvider.get(DynomiteJedisProvider.java:59)
	at com.netflix.conductor.jedis.DynomiteJedisProvider.get(DynomiteJedisProvider.java:24)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
	at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:65)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
	at com.netflix.governator.event.ApplicationEventModule$ApplicationEventSubscribingProvisionListener.onProvision(ApplicationEventModule.java:89)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:133)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:63)
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
	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)
	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.netflix.conductor.bootstrap.Main.main(Main.java:50)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
	at com.netflix.dyno.connectionpool.impl.lb.HostUtils.calculateReplicationFactorForDC(HostUtils.java:71)
	at com.netflix.dyno.connectionpool.impl.lb.HostSelectionWithFallback.initWithHosts(HostSelectionWithFallback.java:368)
	at com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl.initSelectionStrategy(ConnectionPoolImpl.java:641)
	at com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl.start(ConnectionPoolImpl.java:543)
	at com.netflix.dyno.jedis.DynoJedisUtils.startConnectionPool(DynoJedisUtils.java:71)
	... 29 more

I presume I have set the configuration to talk to the dynomite cluster wrong. But, it would be helpful for beginners if it could throw a more specific exception explaining how the configuration is wrong.

skissane avatar Jan 20 '20 00:01 skissane

Is this resolved? I'm facing the same issue

prkrishna avatar Mar 20 '20 04:03 prkrishna

same issue faced. Please help!

abhinav0101 avatar Mar 12 '21 08:03 abhinav0101

it comes when I set .setLocalDataCenter() is config

abhinav0101 avatar Mar 16 '21 21:03 abhinav0101

same problem. Is there any solution?

lijia-rengage avatar Apr 21 '23 09:04 lijia-rengage