Conductor: Conductor doesn't start with ElasticSearch 6

Created on 29 Apr 2019  路  5Comments  路  Source: Netflix/conductor

Hi,

I'm trying to use Conductor server along with Elasticsearch 6.
I compiled everything following these instructions : https://github.com/Netflix/conductor/tree/master/es6-persistence

But when I run the Conductor as standalone I get this error :

Exception in thread "main" java.lang.InstantiationError: org.elasticsearch.common.transport.TransportAddress
    at com.netflix.conductor.elasticsearch.ElasticSearchTransportClientProvider.get(ElasticSearchTransportClientProvider.java:48)
    at com.netflix.conductor.elasticsearch.ElasticSearchTransportClientProvider.get(ElasticSearchTransportClientProvider.java:19)
    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.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
    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.ConstructorInjector.construct(ConstructorInjector.java:92)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    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.FactoryProxy.get(FactoryProxy.java:56)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
    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.ConstructorInjector.construct(ConstructorInjector.java:92)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    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.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
    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.ConstructorInjector.construct(ConstructorInjector.java:92)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
    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.ConstructorInjector.construct(ConstructorInjector.java:92)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    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:53)

And when I try to use an external elasticsearch using HTTP I get this error :

1) Error injecting constructor, java.lang.NoSuchMethodError: org.elasticsearch.client.RestHighLevelClient.<init>(Lorg/elasticsearch/client/RestClientBuilder;)V
--
聽 | at com.netflix.conductor.dao.es6.index.ElasticSearchRestDAOV6.<init>(ElasticSearchRestDAOV6.java:140)
聽 | at com.netflix.conductor.dao.es6.index.ElasticSearchRestDAOV6.class(ElasticSearchRestDAOV6.java:86)
聽 | while locating com.netflix.conductor.dao.es6.index.ElasticSearchRestDAOV6
聽 | while locating com.netflix.conductor.dao.IndexDAO
聽 | for the 2nd parameter of com.netflix.conductor.core.orchestration.ExecutionDAOFacade.<init>(ExecutionDAOFacade.java:51)
聽 | at com.netflix.conductor.core.orchestration.ExecutionDAOFacade.class(ExecutionDAOFacade.java:41)
聽 | while locating com.netflix.conductor.core.orchestration.ExecutionDAOFacade
聽 | for the 6th parameter of com.netflix.conductor.core.execution.WorkflowExecutor.<init>(WorkflowExecutor.java:106)
聽 | while locating com.netflix.conductor.core.execution.WorkflowExecutor
聽 | for the 1st parameter of com.netflix.conductor.core.events.ActionProcessor.<init>(ActionProcessor.java:50)
聽 | at com.netflix.conductor.core.config.CoreModule.configure(CoreModule.java:51) (via modules: com.google.inject.util.Modules$OverrideModule -> com.netflix.conductor.server.ServerModule -> com.netflix.conductor.core.config.CoreModule)
聽 | while locating com.netflix.conductor.core.events.ActionProcessor
聽 | Caused by: java.lang.NoSuchMethodError: org.elasticsearch.client.RestHighLevelClient.<init>(Lorg/elasticsearch/client/RestClientBuilder;)V
聽 | at com.netflix.conductor.dao.es6.index.ElasticSearchRestDAOV6.<init>(ElasticSearchRestDAOV6.java:144)
聽 | at com.netflix.conductor.dao.es6.index.ElasticSearchRestDAOV6$$FastClassByGuice$$960a60af.newInstance(<generated>)
聽 | at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
聽 | at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
聽 | at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
聽 | at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
聽 | 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.ConstructorInjector.construct(ConstructorInjector.java:92)
聽 | at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
聽 | 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.FactoryProxy.get(FactoryProxy.java:56)
聽 | at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
聽 | at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
聽 | at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
聽 | at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
聽 | at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
聽 | 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.ConstructorInjector.construct(ConstructorInjector.java:92)
聽 | at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
聽 | 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.SingleParameterInjector.inject(SingleParameterInjector.java:38)
聽 | at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
聽 | at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
聽 | at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
聽 | at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
聽 | 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.ConstructorInjector.construct(ConstructorInjector.java:92)
聽 | at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
聽 | at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
聽 | at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
聽 | at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
聽 | at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
聽 | at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
聽 | 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.ConstructorInjector.construct(ConstructorInjector.java:92)
聽 | at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
聽 | 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:53)

Am I doing something wrong ? Is ES 6 really supported ?

Most helpful comment

My experience with ES6 is good so far, no problems for a few months in production. I also just followed the instruction and it works.

My ES6 settings:

workflow.elasticsearch.instanceType=external
workflow.elasticsearch.version=6
workflow.elasticsearch.cluster.health.color=green
workflow.elasticsearch.url=http://my-aws-es-endpoint:80
workflow.elasticsearch.index.name=conductor
workflow.elasticsearch.tasklog.index.name=task_log

Yes, I also had the problem with dependencies.lock initially and most probably following what @tafael wrote above should help.

All 5 comments

@tafael / @dskarataev Please comment on your experience with using ES6 with conductor.

Hi @mrik974, I was able to run conductor following the instructions of es6-module from a fresh clone of master branch. The problem that you having is most commonly caused by incorrect libraries being packaged during build. Did you deleted the files "dependencies.lock" of every module before building ? If you don't, gradle will use the version declared in the file dependencies.lock that have the es5-client in it, and probably will cause the issue you are seeing. Tell me if that was the case and if it solves your issue.

Regards

My experience with ES6 is good so far, no problems for a few months in production. I also just followed the instruction and it works.

My ES6 settings:

workflow.elasticsearch.instanceType=external
workflow.elasticsearch.version=6
workflow.elasticsearch.cluster.health.color=green
workflow.elasticsearch.url=http://my-aws-es-endpoint:80
workflow.elasticsearch.index.name=conductor
workflow.elasticsearch.tasklog.index.name=task_log

Yes, I also had the problem with dependencies.lock initially and most probably following what @tafael wrote above should help.

Thanks! I'm not used to gradle, and I skipped the line To do that delete all dependencies.lock files.
I couldn't get it to work with HTTP (it issued a timeout after 30s) but with TCP port 9300 it works like a charm.
Closing the ticket now, as HTTP connection is another issue (maybe from my side again so I'll try a few things before posting).
Thank you for your help and keep up that good work!

Thank you for the prompt responses @tafael and @dskarataev .

Was this page helpful?
0 / 5 - 0 ratings