From 93e8ac62c5c4ddc9f146c4bc2d379dbb2549d7f5 Mon Sep 17 00:00:00 2001 From: Jeffrey Starker Date: Tue, 9 Oct 2018 15:28:29 -0700 Subject: [PATCH 1/3] Adds ES5 REST index DAO for conductor. With ES5 and later, there is a big push to use the REST client rather than the TCP transport client. Not only that, but some services such as AWS ElasticSearch only support the HTTP REST client. This is an attempt to add the ES 5 REST client for conductor. You would configure this by setting `workflow.elasticsearch.version=5-rest` and also setting the `workflow.elasticsearch.url=http://:`. You can set multiple hosts by adding seperating them with a comma. --- contribs/dependencies.lock | 18 +- .../core/execution/TestConfiguration.java | 1 + es2-persistence/dependencies.lock | 72 +- es5-persistence/dependencies.lock | 144 ++-- es5-rest-persistence/README.md | 15 + es5-rest-persistence/build.gradle | 35 + es5-rest-persistence/dependencies.lock | 657 +++++++++++++++++ .../es5rest/index/ElasticSearchDAOV5Rest.java | 666 ++++++++++++++++++ .../index/ElasticSearchModuleV5Rest.java | 65 ++ .../dao/es5rest/TestConfiguration.java | 123 ++++ .../index/TestElasticSearchDAOV5Rest.java | 178 +++++ .../src/test/resources/log4j.properties | 9 + mysql-persistence/dependencies.lock | 180 ++++- server/dependencies.lock | 110 +-- .../conductor/server/ConductorServer.java | 17 +- settings.gradle | 2 +- test-harness/dependencies.lock | 56 +- versionsOfDependencies.gradle | 9 +- 18 files changed, 2111 insertions(+), 246 deletions(-) create mode 100644 es5-rest-persistence/README.md create mode 100644 es5-rest-persistence/build.gradle create mode 100644 es5-rest-persistence/dependencies.lock create mode 100644 es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java create mode 100644 es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java create mode 100644 es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java create mode 100644 es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java create mode 100644 es5-rest-persistence/src/test/resources/log4j.properties diff --git a/contribs/dependencies.lock b/contribs/dependencies.lock index 81ac30b343..58b3964263 100644 --- a/contribs/dependencies.lock +++ b/contribs/dependencies.lock @@ -7,7 +7,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -125,7 +125,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -243,7 +243,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -371,7 +371,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -489,7 +489,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -607,7 +607,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -741,7 +741,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -875,7 +875,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -1009,7 +1009,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.415", + "locked": "1.11.424", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java b/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java index 6eb5c1a6b1..2d5610223e 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java @@ -17,6 +17,7 @@ import com.netflix.conductor.core.config.Configuration; +import java.util.HashMap; import java.util.Map; /** diff --git a/es2-persistence/dependencies.lock b/es2-persistence/dependencies.lock index 25a979cb31..2ac1968d5a 100644 --- a/es2-persistence/dependencies.lock +++ b/es2-persistence/dependencies.lock @@ -82,12 +82,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -184,12 +184,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch:elasticsearch": { "locked": "2.4.6", @@ -299,12 +299,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -396,12 +396,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -493,12 +493,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -608,12 +608,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -713,12 +713,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -823,12 +823,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch:elasticsearch": { "locked": "2.4.6", @@ -937,12 +937,12 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch:elasticsearch": { "locked": "2.4.6", diff --git a/es5-persistence/dependencies.lock b/es5-persistence/dependencies.lock index 3b0573d567..8ce71beaba 100644 --- a/es5-persistence/dependencies.lock +++ b/es5-persistence/dependencies.lock @@ -87,20 +87,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -197,20 +197,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -307,20 +307,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -417,20 +417,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -527,20 +527,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -641,20 +641,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -759,20 +759,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -877,20 +877,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -995,20 +995,20 @@ "locked": "3.0" }, "org.apache.logging.log4j:log4j-api": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "locked": "2.11.1", + "requested": "2.11.1" }, "org.elasticsearch.client:transport": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.mockito:mockito-all": { "locked": "1.10.0", diff --git a/es5-rest-persistence/README.md b/es5-rest-persistence/README.md new file mode 100644 index 0000000000..b7cb1989d7 --- /dev/null +++ b/es5-rest-persistence/README.md @@ -0,0 +1,15 @@ +# ES5 REST persistence + +This module provides ES5 REST persistence instead of relying on the Transport protocol. + +## Usage + +To use this module, set the following values in your conductor configuration: + + +``` +workflow.elasticsearch.version=5-rest +workflow.elasticsearch.url=http://127.0.0.1:9200 +``` + +**NOTE:** You can set multiple hosts by appending hosts via a `,` (comma). \ No newline at end of file diff --git a/es5-rest-persistence/build.gradle b/es5-rest-persistence/build.gradle new file mode 100644 index 0000000000..d0c061895d --- /dev/null +++ b/es5-rest-persistence/build.gradle @@ -0,0 +1,35 @@ +dependencies { + + compile (project(':conductor-core')) { + transitive = false + } + + compile (project(':conductor-common')) { + transitive = false + } + + compile (project(':conductor-es5-persistence')) { + transitive = false + } + + // Specific 3rd parties we rely on + compile "com.fasterxml.jackson.core:jackson-core:${revJacksonCore}" + compile "com.fasterxml.jackson.core:jackson-databind:${revJacksonDatabind}" + compile "com.google.inject:guice:${revGuice}" + compile "commons-io:commons-io:${revCommonsIo}" + compile "org.apache.commons:commons-lang3:${revCommonsLang3}" + compile "org.slf4j:slf4j-api:${revSlf4j}" + compile "joda-time:joda-time:${revJodaTime}" + + // ES5 Dependencies + compile "org.apache.logging.log4j:log4j-api:${revLog4jApi}" + compile "org.apache.logging.log4j:log4j-core:${revLog4jCore}" + + compile "org.elasticsearch:elasticsearch:${revElasticSearch5}" + compile "org.elasticsearch.client:elasticsearch-rest-client:${revElasticSearch5}" + compile "org.elasticsearch.client:elasticsearch-rest-high-level-client:${revElasticSearch5}" + + testRuntimeOnly "org.slf4j:slf4j-log4j12:${revSlf4jlog4j}" + testRuntimeOnly project(':conductor-core') + testRuntimeOnly project(':conductor-es5-persistence') +} diff --git a/es5-rest-persistence/dependencies.lock b/es5-rest-persistence/dependencies.lock new file mode 100644 index 0000000000..a282f593aa --- /dev/null +++ b/es5-rest-persistence/dependencies.lock @@ -0,0 +1,657 @@ +{ + "compile": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "compileClasspath": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "default": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "runtime": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "runtimeClasspath": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "testCompile": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "junit:junit-dep": { + "locked": "4.10", + "requested": "4.10" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.mockito:mockito-all": { + "locked": "1.10.0", + "requested": "1.10.0" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "junit:junit-dep": { + "locked": "4.10", + "requested": "4.10" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.mockito:mockito-all": { + "locked": "1.10.0", + "requested": "1.10.0" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "testRuntime": { + "com.fasterxml.jackson.core:jackson-core": { + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.google.inject:guice": { + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "commons-io:commons-io": { + "locked": "2.4", + "requested": "2.4" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "junit:junit-dep": { + "locked": "4.10", + "requested": "4.10" + }, + "org.apache.commons:commons-lang3": { + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.mockito:mockito-all": { + "locked": "1.10.0", + "requested": "1.10.0" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.25", + "requested": "1.7.25" + } + }, + "testRuntimeClasspath": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, + "com.fasterxml.jackson.core:jackson-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "2.8.6", + "requested": "2.7.5" + }, + "com.fasterxml.jackson.core:jackson-databind": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "2.7.5", + "requested": "2.7.5" + }, + "com.github.rholder:guava-retrying": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-common" + ], + "locked": "2.0.0" + }, + "com.google.inject.extensions:guice-multibindings": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "4.1.0" + }, + "com.google.inject:guice": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "4.1.0", + "requested": "4.1.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "2.2.0" + }, + "com.netflix.conductor:conductor-common": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "project": true + }, + "com.netflix.conductor:conductor-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { + "project": true + }, + "com.netflix.servo:servo-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.12.17" + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.68.0" + }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, + "commons-io:commons-io": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.4", + "requested": "2.4" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.2.2" + }, + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" + }, + "junit:junit-dep": { + "locked": "4.10", + "requested": "4.10" + }, + "org.apache.commons:commons-lang3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "3.0", + "requested": "3.0" + }, + "org.apache.logging.log4j:log4j-api": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.apache.logging.log4j:log4j-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.11.1", + "requested": "2.11.1" + }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:transport": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch:elasticsearch": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.mockito:mockito-all": { + "locked": "1.10.0", + "requested": "1.10.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-common" + ], + "locked": "1.8.0-alpha1", + "requested": "1.7.25" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.8.0-alpha1", + "requested": "1.8.0-alpha1" + } + } +} \ No newline at end of file diff --git a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java b/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java new file mode 100644 index 0000000000..311c610d46 --- /dev/null +++ b/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java @@ -0,0 +1,666 @@ +package com.netflix.conductor.dao.es5rest.index; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.netflix.conductor.annotations.Trace; +import com.netflix.conductor.common.metadata.events.EventExecution; +import com.netflix.conductor.common.metadata.tasks.Task; +import com.netflix.conductor.common.metadata.tasks.TaskExecLog; +import com.netflix.conductor.common.run.SearchResult; +import com.netflix.conductor.common.run.TaskSummary; +import com.netflix.conductor.common.run.Workflow; +import com.netflix.conductor.common.run.WorkflowSummary; +import com.netflix.conductor.common.utils.RetryUtil; +import com.netflix.conductor.core.config.Configuration; +import com.netflix.conductor.core.events.queue.Message; +import com.netflix.conductor.core.execution.ApplicationException; +import com.netflix.conductor.dao.IndexDAO; +import com.netflix.conductor.dao.es5.index.ElasticSearchDAOV5; +import com.netflix.conductor.dao.es5.index.query.parser.Expression; +import com.netflix.conductor.dao.es5.index.query.parser.ParserException; +import com.netflix.conductor.metrics.Monitors; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.entity.ContentType; +import org.apache.http.nio.entity.NByteArrayEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.action.DocWriteResponse; +import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.bulk.BulkResponse; +import org.elasticsearch.action.delete.DeleteRequest; +import org.elasticsearch.action.delete.DeleteResponse; +import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchRequest; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.update.UpdateRequest; +import org.elasticsearch.action.update.UpdateResponse; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.ResponseException; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.QueryStringQueryBuilder; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.elasticsearch.search.sort.FieldSortBuilder; +import org.elasticsearch.search.sort.SortOrder; +import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + + +@Trace +@Singleton +public class ElasticSearchDAOV5Rest implements IndexDAO { + + private static Logger logger = LoggerFactory.getLogger(ElasticSearchDAOV5Rest.class); + + private static final int RETRY_COUNT = 3; + + private static final String WORKFLOW_DOC_TYPE = "workflow"; + + private static final String TASK_DOC_TYPE = "task"; + + private static final String LOG_DOC_TYPE = "task_log"; + + private static final String EVENT_DOC_TYPE = "event"; + + private static final String MSG_DOC_TYPE = "message"; + + private @interface HttpMethod { + String GET = "GET"; + String POST = "POST"; + String PUT = "PUT"; + String HEAD = "HEAD"; + } + + private static final String className = ElasticSearchDAOV5Rest.class.getSimpleName(); + + private String indexName; + private String logIndexPrefix; + private String logIndexName; + + private ObjectMapper objectMapper; + private RestHighLevelClient elasticSearchClient; + private RestClient elasticSearchAdminClient; + + private final ExecutorService executorService; + + private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); + private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyyMMww"); + static { + SIMPLE_DATE_FORMAT.setTimeZone(GMT); + } + + @Inject + public ElasticSearchDAOV5Rest(RestClient lowLevelRestClient, Configuration config, ObjectMapper objectMapper) { + + this.objectMapper = objectMapper; + this.elasticSearchAdminClient = lowLevelRestClient; + this.elasticSearchClient = new RestHighLevelClient(lowLevelRestClient); + this.indexName = config.getProperty("workflow.elasticsearch.index.name", null); + this.logIndexPrefix = config.getProperty("workflow.elasticsearch.tasklog.index.name", "task_log"); + + try { + initIndex(); + updateIndexName(); + Executors.newScheduledThreadPool(1).scheduleAtFixedRate(this::updateIndexName, 0, 1, TimeUnit.HOURS); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + + // Set up a workerpool for performing async operations. + int corePoolSize = 6; + int maximumPoolSize = 12; + long keepAliveTime = 1L; + this.executorService = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, + keepAliveTime, + TimeUnit.MINUTES, + new LinkedBlockingQueue<>()); + + } + + /** + * Roll the tasklog index daily. + */ + private void updateIndexName() { + this.logIndexName = this.logIndexPrefix + "_" + SIMPLE_DATE_FORMAT.format(new Date()); + + try { + addIndex(logIndexName); + } catch (IOException e) { + logger.error("Failed to update log index name: {}", logIndexName, e); + } + } + + /** + * Initializes the index with the required templates and mappings. + */ + private void initIndex() throws Exception { + + //0. Add the tasklog template + if (doesResourceNotExist("/_template/tasklog_template")) { + logger.info("Creating the index template 'tasklog_template'"); + InputStream stream = ElasticSearchDAOV5.class.getResourceAsStream("/template_tasklog.json"); + byte[] templateSource = IOUtils.toByteArray(stream); + + HttpEntity entity = new NByteArrayEntity(templateSource, ContentType.APPLICATION_JSON); + try { + elasticSearchAdminClient.performRequest(HttpMethod.PUT, "/_template/tasklog_template", Collections.emptyMap(), entity); + } catch (IOException e) { + logger.error("Failed to initialize tasklog_template", e); + } + } + + //1. Create the required index + try { + addIndex(indexName); + } catch (IOException e) { + logger.error("Failed to initialize index '{}'", indexName, e); + } + + //2. Add mappings for the workflow document type + try { + addMappingToIndex(indexName, WORKFLOW_DOC_TYPE, "/mappings_docType_workflow.json"); + } catch (IOException e) { + logger.error("Failed to add {} mapping", WORKFLOW_DOC_TYPE); + } + + //3. Add mappings for task document type + try { + addMappingToIndex(indexName, TASK_DOC_TYPE, "/mappings_docType_task.json"); + } catch (IOException e) { + logger.error("Failed to add {} mapping", TASK_DOC_TYPE); + } + + } + + /** + * Adds an index to elasticsearch if it does not exist. + * + * @param index The name of the index to create. + * @throws IOException If an error occurred during requests to ES. + */ + private void addIndex(final String index) throws IOException { + + logger.info("Adding index '{}'...", index); + + String resourcePath = "/" + index; + + if (doesResourceNotExist(resourcePath)) { + + try { + elasticSearchAdminClient.performRequest(HttpMethod.PUT, resourcePath); + + logger.info("Added '{}' index", index); + } catch (ResponseException e) { + + boolean errorCreatingIndex = true; + + Response errorResponse = e.getResponse(); + if (errorResponse.getStatusLine().getStatusCode() == HttpStatus.SC_BAD_REQUEST) { + JsonNode root = objectMapper.readTree(EntityUtils.toString(errorResponse.getEntity())); + String errorCode = root.get("error").get("type").asText(); + if ("index_already_exists_exception".equals(errorCode)) { + errorCreatingIndex = false; + } + } + + if (errorCreatingIndex) { + throw e; + } + } + } else { + logger.info("Index '{}' already exists", index); + } + } + + /** + * Adds a mapping type to an index if it does not exist. + * + * @param index The name of the index. + * @param mappingType The name of the mapping type. + * @param mappingFilename The name of the mapping file to use to add the mapping if it does not exist. + * @throws IOException If an error occurred during requests to ES. + */ + private void addMappingToIndex(final String index, final String mappingType, final String mappingFilename) throws IOException { + + logger.info("Adding '{}' mapping to index '{}'...", mappingType, index); + + String resourcePath = "/" + index + "/_mapping/" + mappingType; + + if (doesResourceNotExist(resourcePath)) { + InputStream stream = ElasticSearchDAOV5.class.getResourceAsStream(mappingFilename); + byte[] mappingSource = IOUtils.toByteArray(stream); + + HttpEntity entity = new NByteArrayEntity(mappingSource, ContentType.APPLICATION_JSON); + elasticSearchAdminClient.performRequest(HttpMethod.PUT, resourcePath, Collections.emptyMap(), entity); + logger.info("Added '{}' mapping", mappingType); + } else { + logger.info("Mapping '{}' already exists", mappingType); + } + } + + /** + * Determines whether a resource exists in ES. This will call a GET method to a particular path and + * return true if status 200; false otherwise. + * + * @param resourcePath The path of the resource to get. + * @return True if it exists; false otherwise. + * @throws IOException If an error occurred during requests to ES. + */ + public boolean doesResourceExist(final String resourcePath) throws IOException { + Response response = elasticSearchAdminClient.performRequest(HttpMethod.HEAD, resourcePath); + return response.getStatusLine().getStatusCode() == HttpStatus.SC_OK; + } + + /** + * The inverse of doesResourceExist. + * + * @param resourcePath The path of the resource to check. + * @return True if it does not exist; false otherwise. + * @throws IOException If an error occurred during requests to ES. + */ + public boolean doesResourceNotExist(final String resourcePath) throws IOException { + return !doesResourceExist(resourcePath); + } + + @Override + public void indexWorkflow(Workflow workflow) { + + String workflowId = workflow.getWorkflowId(); + WorkflowSummary summary = new WorkflowSummary(workflow); + + indexObject(indexName, WORKFLOW_DOC_TYPE, workflowId, summary); + } + + @Override + public CompletableFuture asyncIndexWorkflow(Workflow workflow) { + return CompletableFuture.runAsync(() -> indexWorkflow(workflow), executorService); + } + + @Override + public void indexTask(Task task) { + + String taskId = task.getTaskId(); + TaskSummary summary = new TaskSummary(task); + + indexObject(indexName, TASK_DOC_TYPE, taskId, summary); + } + + @Override + public CompletableFuture asyncIndexTask(Task task) { + return CompletableFuture.runAsync(() -> indexTask(task), executorService); + } + + @Override + public void addTaskExecutionLogs(List taskExecLogs) { + if (taskExecLogs.isEmpty()) { + return; + } + + BulkRequest bulkRequest = new BulkRequest(); + + for (TaskExecLog log : taskExecLogs) { + + byte[] docBytes; + try { + docBytes = objectMapper.writeValueAsBytes(log); + } catch (JsonProcessingException e) { + logger.error("Failed to convert task log to JSON for task {}", log.getTaskId()); + continue; + } + + IndexRequest request = new IndexRequest(logIndexName, LOG_DOC_TYPE); + request.source(docBytes, XContentType.JSON); + bulkRequest.add(request); + } + + try { + new RetryUtil().retryOnException(() -> { + try { + return elasticSearchClient.bulk(bulkRequest); + } catch (IOException e) { + throw new RuntimeException(e); + } + }, null, BulkResponse::hasFailures, RETRY_COUNT, "Indexing all execution logs into doc_type task", "addTaskExecutionLogs"); + } catch (Exception e) { + List taskIds = taskExecLogs.stream().map(TaskExecLog::getTaskId).collect(Collectors.toList()); + logger.error("Failed to index task execution logs for tasks: {}", taskIds, e); + } + } + + @Override + public CompletableFuture asyncAddTaskExecutionLogs(List logs) { + return CompletableFuture.runAsync(() -> addTaskExecutionLogs(logs), executorService); + } + + @Override + public List getTaskExecutionLogs(String taskId) { + + try { + + // Build Query + Expression expression = Expression.fromString("taskId='" + taskId + "'"); + QueryBuilder queryBuilder = expression.getFilterBuilder(); + + BoolQueryBuilder filterQuery = QueryBuilders.boolQuery().must(queryBuilder); + QueryStringQueryBuilder stringQuery = QueryBuilders.queryStringQuery("*"); + BoolQueryBuilder fq = QueryBuilders.boolQuery().must(stringQuery).must(filterQuery); + + // Create the searchObjectIdsViaExpression source + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchSourceBuilder.query(fq); + searchSourceBuilder.sort(new FieldSortBuilder("createdTime").order(SortOrder.ASC)); + + // Generate the actual request to send to ES. + SearchRequest searchRequest = new SearchRequest(logIndexPrefix + "*"); + searchRequest.types(LOG_DOC_TYPE); + searchRequest.source(searchSourceBuilder); + + SearchResponse response = elasticSearchClient.search(searchRequest); + + SearchHit[] hits = response.getHits().getHits(); + List logs = new ArrayList<>(hits.length); + for(SearchHit hit : hits) { + String source = hit.getSourceAsString(); + TaskExecLog tel = objectMapper.readValue(source, TaskExecLog.class); + logs.add(tel); + } + + return logs; + + }catch(Exception e) { + logger.error("Failed to get task execution logs for task: {}", taskId, e); + } + + return null; + } + + @Override + public void addMessage(String queue, Message message) { + Map doc = new HashMap<>(); + doc.put("messageId", message.getId()); + doc.put("payload", message.getPayload()); + doc.put("queue", queue); + doc.put("created", System.currentTimeMillis()); + + indexObject(logIndexName, MSG_DOC_TYPE, doc); + } + + @Override + public void addEventExecution(EventExecution eventExecution) { + String id = eventExecution.getName() + "." + eventExecution.getEvent() + "." + eventExecution.getMessageId() + "." + eventExecution.getId(); + + indexObject(logIndexName, EVENT_DOC_TYPE, id, eventExecution); + } + + @Override + public CompletableFuture asyncAddEventExecution(EventExecution eventExecution) { + return CompletableFuture.runAsync(() -> addEventExecution(eventExecution), executorService); + } + + @Override + public SearchResult searchWorkflows(String query, String freeText, int start, int count, List sort) { + try { + return searchObjectIdsViaExpression(query, start, count, sort, freeText, WORKFLOW_DOC_TYPE); + } catch (Exception e) { + throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, e.getMessage(), e); + } + } + + @Override + public SearchResult searchTasks(String query, String freeText, int start, int count, List sort) { + try { + return searchObjectIdsViaExpression(query, start, count, sort, freeText, TASK_DOC_TYPE); + } catch (Exception e) { + throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, e.getMessage(), e); + } + } + + @Override + public void removeWorkflow(String workflowId) { + + DeleteRequest request = new DeleteRequest(indexName, WORKFLOW_DOC_TYPE, workflowId); + + try { + DeleteResponse response = elasticSearchClient.delete(request); + + if (response.getResult() == DocWriteResponse.Result.NOT_FOUND) { + logger.error("Index removal failed - document not found by id: {}", workflowId); + } + + } catch (IOException e) { + logger.error("Failed to remove workflow {} from index", workflowId, e); + Monitors.error(className, "remove"); + } + } + + @Override + public CompletableFuture asyncRemoveWorkflow(String workflowId) { + return CompletableFuture.runAsync(() -> removeWorkflow(workflowId), executorService); + } + + @Override + public void updateWorkflow(String workflowInstanceId, String[] keys, Object[] values) { + + if (keys.length != values.length) { + throw new ApplicationException(ApplicationException.Code.INVALID_INPUT, "Number of keys and values do not match"); + } + + UpdateRequest request = new UpdateRequest(indexName, WORKFLOW_DOC_TYPE, workflowInstanceId); + Map source = IntStream.range(0, keys.length).boxed() + .collect(Collectors.toMap(i -> keys[i], i -> values[i])); + request.doc(source); + + logger.debug("Updating workflow {} with {}", workflowInstanceId, source); + + new RetryUtil().retryOnException(() -> { + try { + return elasticSearchClient.update(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + }, null, null, RETRY_COUNT, "Updating index for doc_type workflow", "updateWorkflow"); + } + + @Override + public CompletableFuture asyncUpdateWorkflow(String workflowInstanceId, String[] keys, Object[] values) { + return CompletableFuture.runAsync(() -> updateWorkflow(workflowInstanceId, keys, values), executorService); + } + + @Override + public String get(String workflowInstanceId, String fieldToGet) { + + GetRequest request = new GetRequest(indexName, WORKFLOW_DOC_TYPE, workflowInstanceId); + + GetResponse response; + try { + response = elasticSearchClient.get(request); + } catch (IOException e) { + logger.error("Unable to get Workflow: {} from ElasticSearch index: {}", workflowInstanceId, indexName, e); + return null; + } + + if (response.isExists()){ + Map sourceAsMap = response.getSourceAsMap(); + if (sourceAsMap.containsKey(fieldToGet)){ + return sourceAsMap.get(fieldToGet).toString(); + } + } + + logger.debug("Unable to find Workflow: {} in ElasticSearch index: {}.", workflowInstanceId, indexName); + return null; + } + + private SearchResult searchObjectIdsViaExpression(String structuredQuery, int start, int size, List sortOptions, String freeTextQuery, String docType) throws ParserException, IOException { + + // Build query + QueryBuilder queryBuilder = QueryBuilders.matchAllQuery(); + if(StringUtils.isNotEmpty(structuredQuery)) { + Expression expression = Expression.fromString(structuredQuery); + queryBuilder = expression.getFilterBuilder(); + } + + BoolQueryBuilder filterQuery = QueryBuilders.boolQuery().must(queryBuilder); + QueryStringQueryBuilder stringQuery = QueryBuilders.queryStringQuery(freeTextQuery); + BoolQueryBuilder fq = QueryBuilders.boolQuery().must(stringQuery).must(filterQuery); + + return searchObjectIds(indexName, fq, start, size, sortOptions, docType); + } + + private SearchResult searchObjectIds(String indexName, QueryBuilder queryBuilder, int start, int size, String docType) throws IOException { + return searchObjectIds(indexName, queryBuilder, start, size, null, docType); + } + + /** + * Tries to find object ids for a given query in an index. + * + * @param indexName The name of the index. + * @param queryBuilder The query to use for searching. + * @param start The start to use. + * @param size The total return size. + * @param sortOptions A list of string options to sort in the form VALUE:ORDER; where ORDER is optional and can be either ASC OR DESC. + * @param docType The document type to searchObjectIdsViaExpression for. + * + * @return The SearchResults which includes the count and IDs that were found. + * @throws IOException If we cannot communicate with ES. + */ + private SearchResult searchObjectIds(String indexName, QueryBuilder queryBuilder, int start, int size, List sortOptions, String docType) throws IOException { + + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchSourceBuilder.query(queryBuilder); + searchSourceBuilder.from(start); + searchSourceBuilder.size(size); + + if (sortOptions != null && !sortOptions.isEmpty()) { + + for (String sortOption : sortOptions) { + SortOrder order = SortOrder.ASC; + String field = sortOption; + int index = sortOption.indexOf(":"); + if (index > 0) { + field = sortOption.substring(0, index); + order = SortOrder.valueOf(sortOption.substring(index + 1)); + } + searchSourceBuilder.sort(new FieldSortBuilder(field).order(order)); + } + } + + // Generate the actual request to send to ES. + SearchRequest searchRequest = new SearchRequest(indexName); + searchRequest.types(docType); + searchRequest.source(searchSourceBuilder); + + SearchResponse response = elasticSearchClient.search(searchRequest); + + List result = new LinkedList<>(); + response.getHits().forEach(hit -> result.add(hit.getId())); + long count = response.getHits().getTotalHits(); + return new SearchResult<>(count, result); + } + + @Override + public List searchArchivableWorkflows(String indexName, long archiveTtlDays) { + QueryBuilder q = QueryBuilders.boolQuery() + .must(QueryBuilders.rangeQuery("endTime").lt(LocalDate.now().minusDays(archiveTtlDays).toString())) + .should(QueryBuilders.termQuery("status", "COMPLETED")) + .should(QueryBuilders.termQuery("status", "FAILED")) + .mustNot(QueryBuilders.existsQuery("archived")) + .minimumShouldMatch(1); + + SearchResult workflowIds; + try { + workflowIds = searchObjectIds(indexName, q, 0, 1000, WORKFLOW_DOC_TYPE); + } catch (IOException e) { + logger.error("Unable to communicate with ES to find archivable workflows", e); + return Collections.emptyList(); + } + + return workflowIds.getResults(); + } + + public List searchRecentRunningWorkflows(int lastModifiedHoursAgoFrom, int lastModifiedHoursAgoTo) { + DateTime dateTime = new DateTime(); + QueryBuilder q = QueryBuilders.boolQuery() + .must(QueryBuilders.rangeQuery("updateTime") + .gt(dateTime.minusHours(lastModifiedHoursAgoFrom))) + .must(QueryBuilders.rangeQuery("updateTime") + .lt(dateTime.minusHours(lastModifiedHoursAgoTo))) + .must(QueryBuilders.termQuery("status", "RUNNING")); + + SearchResult workflowIds; + try { + workflowIds = searchObjectIds(indexName, q, 0, 5000, Collections.singletonList("updateTime:ASC"), WORKFLOW_DOC_TYPE); + } catch (IOException e) { + logger.error("Unable to communicate with ES to find recent running workflows", e); + return Collections.emptyList(); + } + + return workflowIds.getResults(); + } + + private void indexObject(final String index, final String docType, final Object doc) { + indexObject(index, docType, null, doc); + } + + private void indexObject(final String index, final String docType, final String docId, final Object doc) { + + byte[] docBytes; + try { + docBytes = objectMapper.writeValueAsBytes(doc); + } catch (JsonProcessingException e) { + logger.error("Failed to convert {} '{}' to byte string", docType, docId); + return; + } + + IndexRequest request = new IndexRequest(index, docType, docId); + request.source(docBytes, XContentType.JSON); + + indexWithRetry(request, "Indexing " + docType + ": " + docId); + } + + /** + * Performs an index operation with a retry. + * @param request The index request that we want to perform. + * @param operationDescription The type of operation that we are performing. + */ + private void indexWithRetry(final IndexRequest request, final String operationDescription) { + + try { + new RetryUtil().retryOnException(() -> { + try { + return elasticSearchClient.index(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + }, null, null, RETRY_COUNT, operationDescription, "indexWithRetry"); + } catch (Exception e) { + Monitors.error(className, "index"); + logger.error("Failed to index {} for request type: {}", request.id(), request.type(), e); + } + } + + +} diff --git a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java b/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java new file mode 100644 index 0000000000..fa8797af74 --- /dev/null +++ b/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java @@ -0,0 +1,65 @@ +/** + * Copyright 2016 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + */ +package com.netflix.conductor.dao.es5rest.index; + +import java.net.URL; +import java.util.List; +import java.util.LinkedList; + +import javax.inject.Singleton; + +import com.netflix.conductor.dao.IndexDAO; +import org.apache.http.HttpHost; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.elasticsearch.client.RestClient; +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.netflix.conductor.core.config.Configuration; + + +public class ElasticSearchModuleV5Rest extends AbstractModule { + + private static Logger logger = LoggerFactory.getLogger(ElasticSearchModuleV5Rest.class); + + @Provides + @Singleton + public RestClient getClient(Configuration config) throws Exception { + + String clusterAddress = config.getProperty("workflow.elasticsearch.url", ""); + + if ("".equals(clusterAddress)) { + logger.warn("workflow.elasticsearch.url is not set. Indexing will remain DISABLED."); + } + + List httpHosts = new LinkedList<>(); + String[] hosts = clusterAddress.split(","); + for (String host : hosts) { + URL url = new URL(host); + httpHosts.add(new HttpHost(url.getHost(), url.getPort(), url.getProtocol())); + } + + return RestClient.builder(httpHosts.toArray(new HttpHost[httpHosts.size()])).build(); + } + + protected void configure() { + bind(IndexDAO.class).to(ElasticSearchDAOV5Rest.class); + } + +} diff --git a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java b/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java new file mode 100644 index 0000000000..9f01b036f7 --- /dev/null +++ b/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java @@ -0,0 +1,123 @@ +package com.netflix.conductor.dao.es5rest; + +import com.netflix.conductor.core.config.Configuration; + +import java.util.HashMap; +import java.util.Map; + +public class TestConfiguration implements Configuration { + + private static final Map properties = new HashMap<>(); + + static { + properties.put("workflow.elasticsearch.index.name", "conductor"); + properties.put("workflow.elasticsearch.tasklog.index.name", "task_log"); + properties.put("workflow.elasticsearch.url", "http://127.0.0.1:9200"); + } + + + @Override + public int getSweepFrequency() { + return 0; + } + + @Override + public boolean disableSweep() { + return false; + } + + @Override + public boolean disableAsyncWorkers() { + return false; + } + + @Override + public String getServerId() { + return null; + } + + @Override + public String getEnvironment() { + return null; + } + + @Override + public String getStack() { + return null; + } + + @Override + public String getAppId() { + return null; + } + + @Override + public String getRegion() { + return null; + } + + @Override + public String getAvailabilityZone() { + return null; + } + + @Override + public Long getWorkflowInputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getMaxWorkflowInputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getWorkflowOutputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getMaxWorkflowOutputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getTaskInputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getMaxTaskInputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getTaskOutputPayloadSizeThresholdKB() { + return null; + } + + @Override + public Long getMaxTaskOutputPayloadSizeThresholdKB() { + return null; + } + + @Override + public int getIntProperty(String name, int defaultValue) { + return 0; + } + + @Override + public long getLongProperty(String name, long defaultValue) { + return 0; + } + + @Override + public String getProperty(String name, String defaultValue) { + return properties.getOrDefault(name, defaultValue); + } + + @Override + public Map getAll() { + return null; + } +} diff --git a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java b/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java new file mode 100644 index 0000000000..1f282070fa --- /dev/null +++ b/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java @@ -0,0 +1,178 @@ +package com.netflix.conductor.dao.es5rest.index; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.netflix.conductor.common.metadata.tasks.Task; +import com.netflix.conductor.common.run.SearchResult; +import com.netflix.conductor.common.run.Workflow; +import com.netflix.conductor.core.config.Configuration; +import com.netflix.conductor.dao.es5.EmbeddedElasticSearchV5; +import com.netflix.conductor.dao.es5rest.TestConfiguration; +import org.elasticsearch.client.RestClient; +import org.junit.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +import static org.junit.Assert.*; + + +public class TestElasticSearchDAOV5Rest { + + private static Logger logger = LoggerFactory.getLogger(TestElasticSearchDAOV5Rest.class); + + private static RestClient restClient; + private static ElasticSearchDAOV5Rest indexDAO; + + private Workflow workflow; + + @BeforeClass + public static void setup() throws Exception { + + EmbeddedElasticSearchV5.start(); + + Configuration configuration = new TestConfiguration(); + ElasticSearchModuleV5Rest esRestModule = new ElasticSearchModuleV5Rest(); + + restClient = esRestModule.getClient(configuration); + + long startTime = System.currentTimeMillis(); + + Map params = new HashMap<>(); + params.put("wait_for_status", "yellow"); + params.put("timeout", "30s"); + + while (true) { + try { + restClient.performRequest("GET", "/_cluster/health", params); + break; + } catch (IOException e) { + logger.info("No ES nodes available yet."); + } + Thread.sleep(10000); + + if (System.currentTimeMillis() - startTime > 60000) { + logger.error("Unable to connect to the ES cluster in time."); + throw new RuntimeException("Unable to connect to ES cluster in time."); + } + } + + ObjectMapper objectMapper = new ObjectMapper(); + indexDAO = new ElasticSearchDAOV5Rest(restClient, configuration, objectMapper); + + } + + @AfterClass + public static void closeClient() throws Exception { + if (restClient != null) { + restClient.close(); + } + + EmbeddedElasticSearchV5.stop(); + } + + @Before + public void createTestWorkflow() { + + workflow = new Workflow(); + workflow.getInput().put("requestId", "request id 001"); + workflow.getInput().put("hasAwards", true); + workflow.getInput().put("channelMapping", 5); + Map name = new HashMap<>(); + name.put("name", "The Who"); + name.put("year", 1970); + Map name2 = new HashMap<>(); + name2.put("name", "The Doors"); + name2.put("year", 1975); + + List names = new LinkedList<>(); + names.add(name); + names.add(name2); + + workflow.getOutput().put("name", name); + workflow.getOutput().put("names", names); + workflow.getOutput().put("awards", 200); + + Task task = new Task(); + task.setReferenceTaskName("task2"); + task.getOutputData().put("location", "http://location"); + task.setStatus(Task.Status.COMPLETED); + + Task task2 = new Task(); + task2.setReferenceTaskName("task3"); + task2.getOutputData().put("refId", "abcddef_1234_7890_aaffcc"); + task2.setStatus(Task.Status.SCHEDULED); + + workflow.getTasks().add(task); + workflow.getTasks().add(task2); + } + + private boolean indexExists(final String index) throws IOException { + return indexDAO.doesResourceExist("/" + index); + } + + private boolean doesMappingExist(final String index, final String mappingName) throws IOException { + return indexDAO.doesResourceExist("/" + index + "/_mapping/" + mappingName); + } + + @Test + public void assertInitialSetup() throws Exception { + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMww"); + dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + + String taskLogIndex = "task_log_" + dateFormat.format(new Date()); + + assertTrue("Index 'conductor' should exist", indexExists("conductor")); + assertTrue("Index '" + taskLogIndex + "' should exist", indexExists(taskLogIndex)); + + assertTrue("Mapping 'workflow' for index 'conductor' should exist", doesMappingExist("conductor", "workflow")); + assertTrue("Mapping 'task' for inndex 'conductor' should exist", doesMappingExist("conductor", "task")); + } + + @Test + public void testNoResultsWhenCleanIndex() { + + SearchResult results = indexDAO.searchWorkflows("", "*", 0, 10, null); + assertEquals("Should have no results on an empty cluster", 0, results.getTotalHits()); + } + + @Test + public void testWorkflowCRUD() { + + String testWorkflowType = "testworkflow"; + String testId = "1"; + + workflow.setWorkflowId(testId); + workflow.setWorkflowType(testWorkflowType); + + // Create + String workflowType = indexDAO.get(testId, "workflowType"); + assertNull("Workflow should not exist", workflowType); + + // Get + indexDAO.indexWorkflow(workflow); + + workflowType = indexDAO.get(testId, "workflowType"); + assertEquals("Should have found our workflow type", testWorkflowType, workflowType); + + // Update + String newWorkflowType = "newworkflowtype"; + String[] keyChanges = {"workflowType"}; + String[] valueChanges = {newWorkflowType}; + + indexDAO.updateWorkflow(testId, keyChanges, valueChanges); + + workflowType = indexDAO.get(testId, "workflowType"); + assertEquals("Should have updated our new workflow type", newWorkflowType, workflowType); + + // Delete + indexDAO.removeWorkflow(testId); + + workflowType = indexDAO.get(testId, "workflowType"); + assertNull("We should no longer have our workflow in the system", workflowType); + } + +} diff --git a/es5-rest-persistence/src/test/resources/log4j.properties b/es5-rest-persistence/src/test/resources/log4j.properties new file mode 100644 index 0000000000..378b3d24f0 --- /dev/null +++ b/es5-rest-persistence/src/test/resources/log4j.properties @@ -0,0 +1,9 @@ +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=INFO, A1 + +# A1 is set to be a ConsoleAppender. +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d{YYYY-MM-dd HH:mm:ss.SSSXXX} [%t] %-5p %c %x - %m%n \ No newline at end of file diff --git a/mysql-persistence/dependencies.lock b/mysql-persistence/dependencies.lock index 78687942d1..e7a9f91260 100644 --- a/mysql-persistence/dependencies.lock +++ b/mysql-persistence/dependencies.lock @@ -1,5 +1,11 @@ { "compile": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -58,9 +64,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.4", @@ -73,8 +85,8 @@ "locked": "1.2.2" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -94,6 +106,12 @@ } }, "compileClasspath": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -152,9 +170,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.4", @@ -167,8 +191,8 @@ "locked": "1.2.2" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -188,6 +212,12 @@ } }, "default": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -246,9 +276,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.4", @@ -261,8 +297,8 @@ "locked": "1.2.2" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -282,6 +318,12 @@ } }, "runtime": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -340,9 +382,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.4", @@ -355,8 +403,8 @@ "locked": "1.2.2" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -376,6 +424,12 @@ } }, "runtimeClasspath": { + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -434,9 +488,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.4", @@ -449,8 +509,8 @@ "locked": "1.2.2" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -482,6 +542,12 @@ "locked": "2.2.3", "requested": "2.2.3" }, + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -540,9 +606,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.5", @@ -559,8 +631,8 @@ "requested": "4.10" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -596,6 +668,12 @@ "locked": "2.2.3", "requested": "2.2.3" }, + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -654,9 +732,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.5", @@ -673,8 +757,8 @@ "requested": "4.10" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -710,6 +794,12 @@ "locked": "2.2.3", "requested": "2.2.3" }, + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -768,9 +858,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.5", @@ -787,8 +883,8 @@ "requested": "4.10" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ @@ -824,6 +920,12 @@ "locked": "2.2.3", "requested": "2.2.3" }, + "com.amazonaws:aws-java-sdk-s3": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "1.11.86" + }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-core" @@ -882,9 +984,15 @@ ], "locked": "0.68.0" }, + "com.spotify:completable-futures": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-core" + ], + "locked": "0.3.1" + }, "com.zaxxer:HikariCP": { - "locked": "2.6.3", - "requested": "2.6.3" + "locked": "3.2.0", + "requested": "3.2.0" }, "commons-io:commons-io": { "locked": "2.5", @@ -901,8 +1009,8 @@ "requested": "4.10" }, "mysql:mysql-connector-java": { - "locked": "5.1.43", - "requested": "5.1.43" + "locked": "8.0.11", + "requested": "8.0.11" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ diff --git a/server/dependencies.lock b/server/dependencies.lock index 2a61900b88..a8fa5fdc88 100644 --- a/server/dependencies.lock +++ b/server/dependencies.lock @@ -10,7 +10,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -225,14 +225,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -246,13 +246,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -288,7 +288,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -503,14 +503,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -524,13 +524,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -566,7 +566,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -781,14 +781,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -802,13 +802,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -844,7 +844,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1059,14 +1059,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -1080,13 +1080,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -1182,7 +1182,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1397,14 +1397,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -1418,13 +1418,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -1460,7 +1460,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1675,14 +1675,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -1696,13 +1696,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -1738,7 +1738,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1953,14 +1953,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "project": true, @@ -1974,13 +1974,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -2016,7 +2016,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -2235,14 +2235,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -2256,13 +2256,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -2302,7 +2302,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -2521,14 +2521,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -2542,13 +2542,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -2588,7 +2588,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -2807,14 +2807,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -2828,13 +2828,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -2874,7 +2874,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -3093,14 +3093,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "locked": "9.3.9.v20160517", @@ -3114,13 +3114,13 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ diff --git a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java index 48af63d348..6cc5c348d5 100644 --- a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java +++ b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java @@ -158,15 +158,22 @@ private void init(String dynoClusterName, List dynoHosts) { case memory: jedis = new JedisMock(); try { - if (conductorConfig.getProperty("workflow.elasticsearch.version", "2").equals("5")){ + + String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); + + if ("5".equals(elasticSearchVersion) || "5-rest".equals(elasticSearchVersion)) { EmbeddedElasticSearchV5.start(); - } - else { - // Use ES2 as default. + } else { EmbeddedElasticSearch.start(); } + if(System.getProperty("workflow.elasticsearch.url") == null) { - System.setProperty("workflow.elasticsearch.url", "localhost:9300"); + + String esUrl = "localhost:9300"; + if ("5-rest".equals(elasticSearchVersion)) { + esUrl = "http://localhost:9200"; + } + System.setProperty("workflow.elasticsearch.url", esUrl); } if(System.getProperty("workflow.elasticsearch.index.name") == null) { System.setProperty("workflow.elasticsearch.index.name", "conductor"); diff --git a/settings.gradle b/settings.gradle index 42fc5d9bbb..5761bdf935 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ rootProject.name='conductor' -include 'common', 'core', 'redis-persistence','es2-persistence', 'es5-persistence','mysql-persistence','jersey', 'client', 'test-harness', 'ui', 'contribs', 'server' +include 'common', 'core', 'redis-persistence','es2-persistence', 'es5-persistence', 'es5-rest-persistence', 'mysql-persistence','jersey', 'client', 'test-harness', 'ui', 'contribs', 'server' rootProject.children.each {it.name="conductor-${it.name}"} diff --git a/test-harness/dependencies.lock b/test-harness/dependencies.lock index b87b93ce0e..ec6b2f3489 100644 --- a/test-harness/dependencies.lock +++ b/test-harness/dependencies.lock @@ -4,7 +4,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -16,7 +16,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -295,14 +295,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "firstLevelTransitive": [ @@ -322,14 +322,14 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -366,7 +366,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -378,7 +378,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -657,14 +657,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "firstLevelTransitive": [ @@ -684,14 +684,14 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -728,7 +728,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -740,7 +740,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1019,14 +1019,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "firstLevelTransitive": [ @@ -1046,14 +1046,14 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ @@ -1090,7 +1090,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -1102,7 +1102,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "locked": "1.11.424" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ @@ -1381,14 +1381,14 @@ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es2-persistence", "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.9.1" + "locked": "2.11.1" }, "org.eclipse.jetty:jetty-server": { "firstLevelTransitive": [ @@ -1408,14 +1408,14 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8" + "locked": "5.6.12" }, "org.elasticsearch:elasticsearch": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "5.6.8", - "requested": "5.6.8" + "locked": "5.6.12", + "requested": "5.6.12" }, "org.flywaydb:flyway-core": { "firstLevelTransitive": [ diff --git a/versionsOfDependencies.gradle b/versionsOfDependencies.gradle index c964ac0c98..be9723fa34 100644 --- a/versionsOfDependencies.gradle +++ b/versionsOfDependencies.gradle @@ -10,8 +10,8 @@ ext { revDynoJedis = '1.6.4' revDynoQueues = '2.0.0-rc3' revElasticSearch2 = '2.4.6' - revElasticSearch5 = '5.6.8' - revElasticSearch5Client = '5.6.8' + revElasticSearch5 = '5.6.12' + revElasticSearch5Client = '5.6.12' revEurekaClient = '1.8.7' revFlywayCore ='4.0.3' revGuavaRetrying = '2.0.0' @@ -30,8 +30,9 @@ ext { revJUnit = '4.10' revJsr311Api = '1.1.1' revJq = '0.0.8' - revLog4jApi = '2.9.1' - revLog4jCore = '2.9.1' + revJodaTime = '2.9.5' + revLog4jApi = '2.11.1' + revLog4jCore = '2.11.1' revMariaDB4j = '2.2.3' revRxJava = '1.2.2' revMockito = '1.10.0' From 5ead2a625d41b82a820b08b5808145793fe2aaaa Mon Sep 17 00:00:00 2001 From: Jeffrey Starker Date: Fri, 12 Oct 2018 10:16:37 -0700 Subject: [PATCH 2/3] Installs ElasticSearchModuleV5Rest in the ServerModule If the configuration is set to use the `5-rest` configuration, the the ServerModule will install the module to configure the IndexDAO. Also cleaned up some unecessary imports and also made sure the new project is included in the conductor-server gradle build. --- .../conductor/core/execution/TestConfiguration.java | 1 - server/build.gradle | 1 + .../netflix/conductor/server/ConductorServer.java | 12 ++++++++---- .../com/netflix/conductor/server/ServerModule.java | 9 ++++++--- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java b/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java index 2d5610223e..6eb5c1a6b1 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/TestConfiguration.java @@ -17,7 +17,6 @@ import com.netflix.conductor.core.config.Configuration; -import java.util.HashMap; import java.util.Map; /** diff --git a/server/build.gradle b/server/build.gradle index bc63c9036c..91bbcc7f42 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -27,6 +27,7 @@ dependencies { compile project(':conductor-contribs') compile project(':conductor-es2-persistence') compile project(':conductor-es5-persistence') + compile project(':conductor-es5-rest-persistence') //Jetty compile "org.eclipse.jetty:jetty-server:${revJetteyServer}" diff --git a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java index 6cc5c348d5..21e5e28d07 100644 --- a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java +++ b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java @@ -160,11 +160,15 @@ private void init(String dynoClusterName, List dynoHosts) { try { String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); + String elasticSearchType = conductorConfig.getProperty("workflow.elasticsearch.type", "embedded"); - if ("5".equals(elasticSearchVersion) || "5-rest".equals(elasticSearchVersion)) { - EmbeddedElasticSearchV5.start(); - } else { - EmbeddedElasticSearch.start(); + // Start embedded ES when 'workflow.elasticsearch.type' is not specified or set as 'embedded'. + if ("embedded".equals(elasticSearchType)) { + if ("5".equals(elasticSearchVersion) || "5-rest".equals(elasticSearchVersion)) { + EmbeddedElasticSearchV5.start(); + } else { + EmbeddedElasticSearch.start(); + } } if(System.getProperty("workflow.elasticsearch.url") == null) { diff --git a/server/src/main/java/com/netflix/conductor/server/ServerModule.java b/server/src/main/java/com/netflix/conductor/server/ServerModule.java index 8ec863c645..cecae63a54 100644 --- a/server/src/main/java/com/netflix/conductor/server/ServerModule.java +++ b/server/src/main/java/com/netflix/conductor/server/ServerModule.java @@ -31,6 +31,7 @@ import com.netflix.conductor.dao.RedisWorkflowModule; import com.netflix.conductor.dao.es.index.ElasticSearchModule; import com.netflix.conductor.dao.es5.index.ElasticSearchModuleV5; +import com.netflix.conductor.dao.es5rest.index.ElasticSearchModuleV5Rest; import com.netflix.conductor.dao.mysql.MySQLWorkflowModule; import com.netflix.dyno.connectionpool.HostSupplier; import redis.clients.jedis.JedisCommands; @@ -88,10 +89,12 @@ protected void configure() { install(new RedisWorkflowModule(conductorConfig, dynoConn, hostSupplier)); } - if (conductorConfig.getProperty("workflow.elasticsearch.version", "2").equals("5")){ + String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); + if ("5".equals(elasticSearchVersion)) { install(new ElasticSearchModuleV5()); - } - else { + } else if ("5-rest".equals(elasticSearchVersion)) { + install(new ElasticSearchModuleV5Rest()); + } else { // Use ES2 as default. install(new ElasticSearchModule()); } From e5803dafad9ff30a25243e01ef754a7a87543ed6 Mon Sep 17 00:00:00 2001 From: Jeffrey Starker Date: Fri, 12 Oct 2018 15:56:00 -0700 Subject: [PATCH 3/3] Refactors the ElasticSearch REST DAO into the ES5 persistence module Instead of creating a new module, I went ahead an merged the REST transport DAO into the ES5 persistence module. I also added a few more configuration options and also updated the README for the es5-persistence module. Now, you need to set the `workflow.elasticsearch.transport` to `rest` in order to use the new REST transport. Otherwise, it will default to `tcp`. I also moved the embedded option under the `workflow.elasticsearch.embedded`. You must set to this to `false`, if you don't want to run the embedded server when `db=memory` is set. --- contribs/dependencies.lock | 18 +- es5-persistence/README.md | 64 +- es5-persistence/build.gradle | 23 +- es5-persistence/dependencies.lock | 780 +++++------------- .../dao/es5/index/ElasticSearchModuleV5.java | 81 +- .../dao/es5/index/ElasticSearchRestDAOV5.java | 11 +- .../conductor/dao/es5}/TestConfiguration.java | 2 +- .../es5/index/TestElasticSearchRestDAOV5.java | 16 +- .../src/test/resources/log4j.properties | 0 es5-rest-persistence/README.md | 15 - es5-rest-persistence/build.gradle | 35 - es5-rest-persistence/dependencies.lock | 657 --------------- .../index/ElasticSearchModuleV5Rest.java | 65 -- server/build.gradle | 1 - server/dependencies.lock | 363 ++++++-- .../conductor/server/ConductorServer.java | 11 +- .../conductor/server/ServerModule.java | 8 +- settings.gradle | 2 +- test-harness/dependencies.lock | 140 +++- 19 files changed, 821 insertions(+), 1471 deletions(-) rename es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java => es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java (98%) rename {es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest => es5-persistence/src/test/java/com/netflix/conductor/dao/es5}/TestConfiguration.java (98%) rename es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java => es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java (92%) rename {es5-rest-persistence => es5-persistence}/src/test/resources/log4j.properties (100%) delete mode 100644 es5-rest-persistence/README.md delete mode 100644 es5-rest-persistence/build.gradle delete mode 100644 es5-rest-persistence/dependencies.lock delete mode 100644 es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java diff --git a/contribs/dependencies.lock b/contribs/dependencies.lock index 58b3964263..0c2447a877 100644 --- a/contribs/dependencies.lock +++ b/contribs/dependencies.lock @@ -7,7 +7,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -125,7 +125,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -243,7 +243,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -371,7 +371,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -489,7 +489,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -607,7 +607,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -741,7 +741,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -875,7 +875,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { @@ -1009,7 +1009,7 @@ "locked": "1.11.86" }, "com.amazonaws:aws-java-sdk-sqs": { - "locked": "1.11.424", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { diff --git a/es5-persistence/README.md b/es5-persistence/README.md index dce62966b2..0e2039eea5 100644 --- a/es5-persistence/README.md +++ b/es5-persistence/README.md @@ -1,3 +1,65 @@ +# ES5 Persistence + +This module provides ES5 persistence when indexing workflows and tasks. + ## Usage -Set `workflow.elasticsearch.version=5` in Server module's configuration options. \ No newline at end of file +This module uses the following configuration options: + +* `workflow.elasticsearch.version` - This is the version of ES to use. +You must set this to `5` to use this module. +* `workflow.elasticsearch.transport` - This determines what type of transport to use. +Valid options are `tcp` or `rest`. +Default is `tcp`, if not specified. +* `workflow.elasticsearch.embedded` - This determines whether or not to run an embedded ES server when `db=memory`. +This option is ignored if `db` is set to some other value. +Default is `true`. +* `workflow.elasticsearch.url` - A comma separated list of schema/host/port of the ES nodes to communicate with. +Schema can be ignored when using `tcp` transport; otherwise, you must specify `http` or `https`. +If you are using `db=memory`, this will automatically use the correct host information to connect to it depending on transport. + +* `workflow.elasticsearch.index.name` - The name of the workflow and task index. +Defaults to `conductor` +* `workflow.elasticsearch.tasklog.index.name` - The name of the task log index. +Defaults to `task_log` + + +### REST Transport + +If you are using AWS ElasticSearch, you should use the `rest` transport as that's the only version transport that they support. +However, this module currently only works with open IAM, VPC version of ElasticSearch. +Eventually, we should create ES modules that can be loaded in to support authentication and request signing, but this currently does not support that. + +### Example Configurations + +**In-memory ES with TCP transport** + +``` +db=memory + +workflow.elasticsearch.version=5 +``` + +**In-memory ES with REST transport** + +``` +db=memory + +workflow.elasticsearch.version=5 +workflow.elasticsearch.transport=rest +``` + +**ES with TCP transport** + +``` +workflow.elasticsearch.version=5 +workflow.elasticsearch.url=127.0.0.1:9300 +``` + +**ES with REST transport** + +``` +workflow.elasticsearch.version=5 +workflow.elasticsearch.transport=rest +workflow.elasticsearch.url=http://127.0.0.1:9200 +``` diff --git a/es5-persistence/build.gradle b/es5-persistence/build.gradle index 05e0cd6935..9aae68e56f 100644 --- a/es5-persistence/build.gradle +++ b/es5-persistence/build.gradle @@ -1,7 +1,21 @@ dependencies { - compile project(':conductor-core') + compile (project(':conductor-core')) { + transitive = false + } + compile (project(':conductor-common')) { + transitive = false + } + + // Specific 3rd parties we rely on + compile "com.google.inject:guice:${revGuice}" + compile "com.fasterxml.jackson.core:jackson-core:${revJacksonCore}" + compile "com.fasterxml.jackson.core:jackson-databind:${revJacksonDatabind}" compile "com.google.inject:guice:${revGuice}" + compile "commons-io:commons-io:${revCommonsIo}" + compile "org.apache.commons:commons-lang3:${revCommonsLang3}" + compile "org.slf4j:slf4j-api:${revSlf4j}" + compile "joda-time:joda-time:${revJodaTime}" //ES5 Dependency compile "org.apache.logging.log4j:log4j-api:${revLog4jApi}" @@ -9,5 +23,10 @@ dependencies { compile "org.elasticsearch:elasticsearch:${revElasticSearch5}" compile "org.elasticsearch.client:transport:${revElasticSearch5}" - compile "commons-io:commons-io:${revCommonsIo}" + compile "org.elasticsearch.client:elasticsearch-rest-client:${revElasticSearch5}" + compile "org.elasticsearch.client:elasticsearch-rest-high-level-client:${revElasticSearch5}" + + testRuntimeOnly "org.slf4j:slf4j-log4j12:${revSlf4jlog4j}" + testRuntimeOnly project(':conductor-core') + testRuntimeOnly project(':conductor-es5-persistence') } diff --git a/es5-persistence/dependencies.lock b/es5-persistence/dependencies.lock index 8ce71beaba..88655aeb0b 100644 --- a/es5-persistence/dependencies.lock +++ b/es5-persistence/dependencies.lock @@ -1,90 +1,34 @@ { "compile": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -94,6 +38,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -103,98 +55,40 @@ "requested": "5.6.12" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "compileClasspath": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -204,6 +98,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -213,98 +115,40 @@ "requested": "5.6.12" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "default": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -314,6 +158,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -323,98 +175,40 @@ "requested": "5.6.12" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "runtime": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -424,6 +218,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -433,98 +235,40 @@ "requested": "5.6.12" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "runtimeClasspath": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -534,6 +278,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -543,102 +295,44 @@ "requested": "5.6.12" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "testCompile": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -648,6 +342,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -661,102 +363,44 @@ "requested": "1.10.0" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "testCompileClasspath": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -766,6 +410,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -779,102 +431,44 @@ "requested": "1.10.0" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "testRuntime": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "locked": "4.1.0", "requested": "4.1.0" }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], "project": true }, "com.netflix.conductor:conductor-core": { "project": true }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, "commons-io:commons-io": { "locked": "2.4", "requested": "2.4" }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" + "joda-time:joda-time": { + "locked": "2.9.5", + "requested": "2.9.5" }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" }, "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { "locked": "2.11.1", @@ -884,6 +478,14 @@ "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { "locked": "5.6.12", "requested": "5.6.12" @@ -897,10 +499,8 @@ "requested": "1.10.0" }, "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.7.25" + "locked": "1.7.25", + "requested": "1.7.25" } }, "testRuntimeClasspath": { @@ -912,15 +512,19 @@ }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.8.6" + "locked": "2.8.6", + "requested": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "2.7.5" + "locked": "2.7.5", + "requested": "2.7.5" }, "com.github.rholder:guava-retrying": { "firstLevelTransitive": [ @@ -936,7 +540,8 @@ }, "com.google.inject:guice": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "4.1.0", "requested": "4.1.0" @@ -949,11 +554,18 @@ }, "com.netflix.conductor:conductor-common": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "project": true }, "com.netflix.conductor:conductor-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "project": true + }, + "com.netflix.conductor:conductor-es5-persistence": { "project": true }, "com.netflix.servo:servo-core": { @@ -975,6 +587,9 @@ "locked": "0.3.1" }, "commons-io:commons-io": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], "locked": "2.4", "requested": "2.4" }, @@ -984,29 +599,64 @@ ], "locked": "1.2.2" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5", + "requested": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "3.0" + "locked": "3.0", + "requested": "3.0" }, "org.apache.logging.log4j:log4j-api": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], "locked": "2.11.1", "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], "locked": "2.11.1", "requested": "2.11.1" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12", + "requested": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12", + "requested": "5.6.12" + }, "org.elasticsearch.client:transport": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], "locked": "5.6.12", "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], "locked": "5.6.12", "requested": "5.6.12" }, @@ -1016,9 +666,15 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], - "locked": "1.7.25" + "locked": "1.8.0-alpha1", + "requested": "1.7.25" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.8.0-alpha1", + "requested": "1.8.0-alpha1" } } } \ No newline at end of file diff --git a/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchModuleV5.java b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchModuleV5.java index ac63184934..6395038fc8 100644 --- a/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchModuleV5.java +++ b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchModuleV5.java @@ -19,11 +19,16 @@ package com.netflix.conductor.dao.es5.index; import java.net.InetAddress; +import java.net.URL; +import java.util.LinkedList; +import java.util.List; import javax.inject.Singleton; import com.netflix.conductor.dao.IndexDAO; +import org.apache.http.HttpHost; import org.elasticsearch.client.Client; +import org.elasticsearch.client.RestClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; @@ -41,7 +46,17 @@ */ public class ElasticSearchModuleV5 extends AbstractModule { - private static Logger log = LoggerFactory.getLogger(ElasticSearchModuleV5.class); + private static Logger logger = LoggerFactory.getLogger(ElasticSearchModuleV5.class); + + private boolean restTransport; + + public ElasticSearchModuleV5() { + this(false); + } + + public ElasticSearchModuleV5(boolean restTransport) { + this.restTransport = restTransport; + } @Provides @Singleton @@ -49,29 +64,55 @@ public Client getClient(Configuration config) throws Exception { String clusterAddress = config.getProperty("workflow.elasticsearch.url", ""); if(clusterAddress.equals("")) { - log.warn("workflow.elasticsearch.url is not set. Indexing will remain DISABLED."); + logger.warn("workflow.elasticsearch.url is not set. Indexing will remain DISABLED."); + } + + Settings settings = Settings.builder() + .put("client.transport.ignore_cluster_name",true) + .put("client.transport.sniff", true) + .build(); + + TransportClient tc = new PreBuiltTransportClient(settings); + String[] hosts = clusterAddress.split(","); + for (String host : hosts) { + String[] hostparts = host.split(":"); + String hostname = hostparts[0]; + int hostport = 9200; + if (hostparts.length == 2) hostport = Integer.parseInt(hostparts[1]); + tc.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostname), hostport)); } + return tc; + } - Settings settings = Settings.builder() - .put("client.transport.ignore_cluster_name",true) - .put("client.transport.sniff", true) - .build(); - - TransportClient tc = new PreBuiltTransportClient(settings); - String[] hosts = clusterAddress.split(","); - for (String host : hosts) { - String[] hostparts = host.split(":"); - String hostname = hostparts[0]; - int hostport = 9200; - if (hostparts.length == 2) hostport = Integer.parseInt(hostparts[1]); - tc.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostname), hostport)); - } - return tc; - - } + @Provides + @Singleton + public RestClient getRestClient(Configuration config) throws Exception { + + String clusterAddress = config.getProperty("workflow.elasticsearch.url", ""); + + if ("".equals(clusterAddress)) { + logger.warn("workflow.elasticsearch.url is not set. Indexing will remain DISABLED."); + } + + List httpHosts = new LinkedList<>(); + String[] hosts = clusterAddress.split(","); + for (String host : hosts) { + URL url = new URL(host); + httpHosts.add(new HttpHost(url.getHost(), url.getPort(), url.getProtocol())); + } + + return RestClient.builder(httpHosts.toArray(new HttpHost[httpHosts.size()])).build(); + } @Override protected void configure() { - bind(IndexDAO.class).to(ElasticSearchDAOV5.class); + + if (restTransport) { + bind(IndexDAO.class).to(ElasticSearchRestDAOV5.class); + } else { + bind(IndexDAO.class).to(ElasticSearchDAOV5.class); + } + + } } diff --git a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java similarity index 98% rename from es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java rename to es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java index 311c610d46..239d32691a 100644 --- a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchDAOV5Rest.java +++ b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java @@ -1,4 +1,4 @@ -package com.netflix.conductor.dao.es5rest.index; +package com.netflix.conductor.dao.es5.index; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; @@ -16,7 +16,6 @@ import com.netflix.conductor.core.events.queue.Message; import com.netflix.conductor.core.execution.ApplicationException; import com.netflix.conductor.dao.IndexDAO; -import com.netflix.conductor.dao.es5.index.ElasticSearchDAOV5; import com.netflix.conductor.dao.es5.index.query.parser.Expression; import com.netflix.conductor.dao.es5.index.query.parser.ParserException; import com.netflix.conductor.metrics.Monitors; @@ -71,9 +70,9 @@ @Trace @Singleton -public class ElasticSearchDAOV5Rest implements IndexDAO { +public class ElasticSearchRestDAOV5 implements IndexDAO { - private static Logger logger = LoggerFactory.getLogger(ElasticSearchDAOV5Rest.class); + private static Logger logger = LoggerFactory.getLogger(ElasticSearchRestDAOV5.class); private static final int RETRY_COUNT = 3; @@ -94,7 +93,7 @@ public class ElasticSearchDAOV5Rest implements IndexDAO { String HEAD = "HEAD"; } - private static final String className = ElasticSearchDAOV5Rest.class.getSimpleName(); + private static final String className = ElasticSearchRestDAOV5.class.getSimpleName(); private String indexName; private String logIndexPrefix; @@ -113,7 +112,7 @@ public class ElasticSearchDAOV5Rest implements IndexDAO { } @Inject - public ElasticSearchDAOV5Rest(RestClient lowLevelRestClient, Configuration config, ObjectMapper objectMapper) { + public ElasticSearchRestDAOV5(RestClient lowLevelRestClient, Configuration config, ObjectMapper objectMapper) { this.objectMapper = objectMapper; this.elasticSearchAdminClient = lowLevelRestClient; diff --git a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java similarity index 98% rename from es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java rename to es5-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java index 9f01b036f7..658bfcba68 100644 --- a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/TestConfiguration.java +++ b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java @@ -1,4 +1,4 @@ -package com.netflix.conductor.dao.es5rest; +package com.netflix.conductor.dao.es5; import com.netflix.conductor.core.config.Configuration; diff --git a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java similarity index 92% rename from es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java rename to es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java index 1f282070fa..6da7247212 100644 --- a/es5-rest-persistence/src/test/java/com/netflix/conductor/dao/es5rest/index/TestElasticSearchDAOV5Rest.java +++ b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java @@ -1,4 +1,4 @@ -package com.netflix.conductor.dao.es5rest.index; +package com.netflix.conductor.dao.es5.index; import com.fasterxml.jackson.databind.ObjectMapper; import com.netflix.conductor.common.metadata.tasks.Task; @@ -6,7 +6,7 @@ import com.netflix.conductor.common.run.Workflow; import com.netflix.conductor.core.config.Configuration; import com.netflix.conductor.dao.es5.EmbeddedElasticSearchV5; -import com.netflix.conductor.dao.es5rest.TestConfiguration; +import com.netflix.conductor.dao.es5.TestConfiguration; import org.elasticsearch.client.RestClient; import org.junit.*; import org.slf4j.Logger; @@ -19,12 +19,12 @@ import static org.junit.Assert.*; -public class TestElasticSearchDAOV5Rest { +public class TestElasticSearchRestDAOV5 { - private static Logger logger = LoggerFactory.getLogger(TestElasticSearchDAOV5Rest.class); + private static Logger logger = LoggerFactory.getLogger(TestElasticSearchRestDAOV5.class); private static RestClient restClient; - private static ElasticSearchDAOV5Rest indexDAO; + private static ElasticSearchRestDAOV5 indexDAO; private Workflow workflow; @@ -34,9 +34,9 @@ public static void setup() throws Exception { EmbeddedElasticSearchV5.start(); Configuration configuration = new TestConfiguration(); - ElasticSearchModuleV5Rest esRestModule = new ElasticSearchModuleV5Rest(); + ElasticSearchModuleV5 esRestModule = new ElasticSearchModuleV5(true); - restClient = esRestModule.getClient(configuration); + restClient = esRestModule.getRestClient(configuration); long startTime = System.currentTimeMillis(); @@ -60,7 +60,7 @@ public static void setup() throws Exception { } ObjectMapper objectMapper = new ObjectMapper(); - indexDAO = new ElasticSearchDAOV5Rest(restClient, configuration, objectMapper); + indexDAO = new ElasticSearchRestDAOV5(restClient, configuration, objectMapper); } diff --git a/es5-rest-persistence/src/test/resources/log4j.properties b/es5-persistence/src/test/resources/log4j.properties similarity index 100% rename from es5-rest-persistence/src/test/resources/log4j.properties rename to es5-persistence/src/test/resources/log4j.properties diff --git a/es5-rest-persistence/README.md b/es5-rest-persistence/README.md deleted file mode 100644 index b7cb1989d7..0000000000 --- a/es5-rest-persistence/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# ES5 REST persistence - -This module provides ES5 REST persistence instead of relying on the Transport protocol. - -## Usage - -To use this module, set the following values in your conductor configuration: - - -``` -workflow.elasticsearch.version=5-rest -workflow.elasticsearch.url=http://127.0.0.1:9200 -``` - -**NOTE:** You can set multiple hosts by appending hosts via a `,` (comma). \ No newline at end of file diff --git a/es5-rest-persistence/build.gradle b/es5-rest-persistence/build.gradle deleted file mode 100644 index d0c061895d..0000000000 --- a/es5-rest-persistence/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -dependencies { - - compile (project(':conductor-core')) { - transitive = false - } - - compile (project(':conductor-common')) { - transitive = false - } - - compile (project(':conductor-es5-persistence')) { - transitive = false - } - - // Specific 3rd parties we rely on - compile "com.fasterxml.jackson.core:jackson-core:${revJacksonCore}" - compile "com.fasterxml.jackson.core:jackson-databind:${revJacksonDatabind}" - compile "com.google.inject:guice:${revGuice}" - compile "commons-io:commons-io:${revCommonsIo}" - compile "org.apache.commons:commons-lang3:${revCommonsLang3}" - compile "org.slf4j:slf4j-api:${revSlf4j}" - compile "joda-time:joda-time:${revJodaTime}" - - // ES5 Dependencies - compile "org.apache.logging.log4j:log4j-api:${revLog4jApi}" - compile "org.apache.logging.log4j:log4j-core:${revLog4jCore}" - - compile "org.elasticsearch:elasticsearch:${revElasticSearch5}" - compile "org.elasticsearch.client:elasticsearch-rest-client:${revElasticSearch5}" - compile "org.elasticsearch.client:elasticsearch-rest-high-level-client:${revElasticSearch5}" - - testRuntimeOnly "org.slf4j:slf4j-log4j12:${revSlf4jlog4j}" - testRuntimeOnly project(':conductor-core') - testRuntimeOnly project(':conductor-es5-persistence') -} diff --git a/es5-rest-persistence/dependencies.lock b/es5-rest-persistence/dependencies.lock deleted file mode 100644 index a282f593aa..0000000000 --- a/es5-rest-persistence/dependencies.lock +++ /dev/null @@ -1,657 +0,0 @@ -{ - "compile": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "compileClasspath": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "default": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "runtime": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "runtimeClasspath": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "testCompile": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "junit:junit-dep": { - "locked": "4.10", - "requested": "4.10" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.mockito:mockito-all": { - "locked": "1.10.0", - "requested": "1.10.0" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "testCompileClasspath": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "junit:junit-dep": { - "locked": "4.10", - "requested": "4.10" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.mockito:mockito-all": { - "locked": "1.10.0", - "requested": "1.10.0" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "testRuntime": { - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.google.inject:guice": { - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.netflix.conductor:conductor-common": { - "project": true - }, - "com.netflix.conductor:conductor-core": { - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "commons-io:commons-io": { - "locked": "2.4", - "requested": "2.4" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "junit:junit-dep": { - "locked": "4.10", - "requested": "4.10" - }, - "org.apache.commons:commons-lang3": { - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.mockito:mockito-all": { - "locked": "1.10.0", - "requested": "1.10.0" - }, - "org.slf4j:slf4j-api": { - "locked": "1.7.25", - "requested": "1.7.25" - } - }, - "testRuntimeClasspath": { - "com.amazonaws:aws-java-sdk-s3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.11.86" - }, - "com.fasterxml.jackson.core:jackson-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.8.6", - "requested": "2.7.5" - }, - "com.fasterxml.jackson.core:jackson-databind": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.7.5", - "requested": "2.7.5" - }, - "com.github.rholder:guava-retrying": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "2.0.0" - }, - "com.google.inject.extensions:guice-multibindings": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "4.1.0" - }, - "com.google.inject:guice": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core", - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "4.1.0", - "requested": "4.1.0" - }, - "com.jayway.jsonpath:json-path": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "2.2.0" - }, - "com.netflix.conductor:conductor-common": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "project": true - }, - "com.netflix.conductor:conductor-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "project": true - }, - "com.netflix.conductor:conductor-es5-persistence": { - "project": true - }, - "com.netflix.servo:servo-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.12.17" - }, - "com.netflix.spectator:spectator-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.68.0" - }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" - }, - "commons-io:commons-io": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "2.4", - "requested": "2.4" - }, - "io.reactivex:rxjava": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "1.2.2" - }, - "joda-time:joda-time": { - "locked": "2.9.5", - "requested": "2.9.5" - }, - "junit:junit-dep": { - "locked": "4.10", - "requested": "4.10" - }, - "org.apache.commons:commons-lang3": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "3.0", - "requested": "3.0" - }, - "org.apache.logging.log4j:log4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.apache.logging.log4j:log4j-core": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "2.11.1", - "requested": "2.11.1" - }, - "org.elasticsearch.client:elasticsearch-rest-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:elasticsearch-rest-high-level-client": { - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.elasticsearch.client:transport": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "5.6.12" - }, - "org.elasticsearch:elasticsearch": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-es5-persistence" - ], - "locked": "5.6.12", - "requested": "5.6.12" - }, - "org.mockito:mockito-all": { - "locked": "1.10.0", - "requested": "1.10.0" - }, - "org.slf4j:slf4j-api": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" - ], - "locked": "1.8.0-alpha1", - "requested": "1.7.25" - }, - "org.slf4j:slf4j-log4j12": { - "locked": "1.8.0-alpha1", - "requested": "1.8.0-alpha1" - } - } -} \ No newline at end of file diff --git a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java b/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java deleted file mode 100644 index fa8797af74..0000000000 --- a/es5-rest-persistence/src/main/java/com/netflix/conductor/dao/es5rest/index/ElasticSearchModuleV5Rest.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2016 Netflix, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - */ -package com.netflix.conductor.dao.es5rest.index; - -import java.net.URL; -import java.util.List; -import java.util.LinkedList; - -import javax.inject.Singleton; - -import com.netflix.conductor.dao.IndexDAO; -import org.apache.http.HttpHost; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.elasticsearch.client.RestClient; -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import com.netflix.conductor.core.config.Configuration; - - -public class ElasticSearchModuleV5Rest extends AbstractModule { - - private static Logger logger = LoggerFactory.getLogger(ElasticSearchModuleV5Rest.class); - - @Provides - @Singleton - public RestClient getClient(Configuration config) throws Exception { - - String clusterAddress = config.getProperty("workflow.elasticsearch.url", ""); - - if ("".equals(clusterAddress)) { - logger.warn("workflow.elasticsearch.url is not set. Indexing will remain DISABLED."); - } - - List httpHosts = new LinkedList<>(); - String[] hosts = clusterAddress.split(","); - for (String host : hosts) { - URL url = new URL(host); - httpHosts.add(new HttpHost(url.getHost(), url.getPort(), url.getProtocol())); - } - - return RestClient.builder(httpHosts.toArray(new HttpHost[httpHosts.size()])).build(); - } - - protected void configure() { - bind(IndexDAO.class).to(ElasticSearchDAOV5Rest.class); - } - -} diff --git a/server/build.gradle b/server/build.gradle index 91bbcc7f42..bc63c9036c 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -27,7 +27,6 @@ dependencies { compile project(':conductor-contribs') compile project(':conductor-es2-persistence') compile project(':conductor-es5-persistence') - compile project(':conductor-es5-rest-persistence') //Jetty compile "org.eclipse.jetty:jetty-server:${revJetteyServer}" diff --git a/server/dependencies.lock b/server/dependencies.lock index a8fa5fdc88..77bc9356d7 100644 --- a/server/dependencies.lock +++ b/server/dependencies.lock @@ -10,17 +10,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -61,6 +63,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -202,6 +205,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -216,7 +225,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -242,6 +252,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -266,7 +288,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -288,17 +311,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -339,6 +364,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -480,6 +506,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -494,7 +526,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -520,6 +553,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -544,7 +589,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -566,17 +612,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -617,6 +665,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -758,6 +807,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -772,7 +827,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -798,6 +854,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -822,7 +890,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -844,17 +913,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -895,6 +966,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -1036,6 +1108,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -1050,7 +1128,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1076,6 +1155,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1100,7 +1191,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -1182,17 +1274,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -1233,6 +1327,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -1374,6 +1469,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -1388,7 +1489,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1414,6 +1516,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1438,7 +1552,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -1460,17 +1575,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -1511,6 +1628,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -1652,6 +1770,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -1666,7 +1790,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1692,6 +1817,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1716,7 +1853,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -1738,17 +1876,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -1789,6 +1929,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -1930,6 +2071,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "mysql:mysql-connector-java": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-mysql-persistence" @@ -1944,7 +2091,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1970,6 +2118,18 @@ "project": true, "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1994,7 +2154,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -2016,17 +2177,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -2067,6 +2230,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -2208,6 +2372,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -2226,7 +2396,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -2252,6 +2423,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -2280,7 +2463,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -2302,17 +2486,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -2353,6 +2539,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -2494,6 +2681,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -2512,7 +2705,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -2538,6 +2732,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -2566,7 +2772,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -2588,17 +2795,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -2639,6 +2848,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -2780,6 +2990,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -2798,7 +3014,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -2824,6 +3041,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -2852,7 +3081,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -2874,17 +3104,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -2925,6 +3157,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -3066,6 +3299,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -3084,7 +3323,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -3110,6 +3350,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -3138,7 +3390,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, diff --git a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java index 21e5e28d07..0118aaecb2 100644 --- a/server/src/main/java/com/netflix/conductor/server/ConductorServer.java +++ b/server/src/main/java/com/netflix/conductor/server/ConductorServer.java @@ -160,11 +160,10 @@ private void init(String dynoClusterName, List dynoHosts) { try { String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); - String elasticSearchType = conductorConfig.getProperty("workflow.elasticsearch.type", "embedded"); + boolean elasticSearchEmbedded = Boolean.parseBoolean(conductorConfig.getProperty("workflow.elasticsearch.embedded", "true")); - // Start embedded ES when 'workflow.elasticsearch.type' is not specified or set as 'embedded'. - if ("embedded".equals(elasticSearchType)) { - if ("5".equals(elasticSearchVersion) || "5-rest".equals(elasticSearchVersion)) { + if (elasticSearchEmbedded) { + if ("5".equals(elasticSearchVersion)) { EmbeddedElasticSearchV5.start(); } else { EmbeddedElasticSearch.start(); @@ -173,8 +172,10 @@ private void init(String dynoClusterName, List dynoHosts) { if(System.getProperty("workflow.elasticsearch.url") == null) { + String elasticSearchTransport = conductorConfig.getProperty("workflow.elasticsearch.transport", "tcp"); + String esUrl = "localhost:9300"; - if ("5-rest".equals(elasticSearchVersion)) { + if ("5".equals(elasticSearchVersion) && "rest".equalsIgnoreCase(elasticSearchTransport)) { esUrl = "http://localhost:9200"; } System.setProperty("workflow.elasticsearch.url", esUrl); diff --git a/server/src/main/java/com/netflix/conductor/server/ServerModule.java b/server/src/main/java/com/netflix/conductor/server/ServerModule.java index cecae63a54..2829ca11e3 100644 --- a/server/src/main/java/com/netflix/conductor/server/ServerModule.java +++ b/server/src/main/java/com/netflix/conductor/server/ServerModule.java @@ -31,7 +31,6 @@ import com.netflix.conductor.dao.RedisWorkflowModule; import com.netflix.conductor.dao.es.index.ElasticSearchModule; import com.netflix.conductor.dao.es5.index.ElasticSearchModuleV5; -import com.netflix.conductor.dao.es5rest.index.ElasticSearchModuleV5Rest; import com.netflix.conductor.dao.mysql.MySQLWorkflowModule; import com.netflix.dyno.connectionpool.HostSupplier; import redis.clients.jedis.JedisCommands; @@ -91,9 +90,10 @@ protected void configure() { String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); if ("5".equals(elasticSearchVersion)) { - install(new ElasticSearchModuleV5()); - } else if ("5-rest".equals(elasticSearchVersion)) { - install(new ElasticSearchModuleV5Rest()); + + String elasticSearchTransport = conductorConfig.getProperty("workflow.elasticsearch.transport", "tcp"); + install(new ElasticSearchModuleV5("rest".equalsIgnoreCase(elasticSearchTransport))); + } else { // Use ES2 as default. install(new ElasticSearchModule()); diff --git a/settings.gradle b/settings.gradle index 5761bdf935..ca3052713d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ rootProject.name='conductor' -include 'common', 'core', 'redis-persistence','es2-persistence', 'es5-persistence', 'es5-rest-persistence', 'mysql-persistence','jersey', 'client', 'test-harness', 'ui', 'contribs', 'server' +include 'common', 'core', 'redis-persistence','es2-persistence', 'es5-persistence', 'mysql-persistence','jersey', 'client', 'test-harness', 'ui', 'contribs', 'server' rootProject.children.each {it.name="conductor-${it.name}"} diff --git a/test-harness/dependencies.lock b/test-harness/dependencies.lock index ec6b2f3489..b42005cde4 100644 --- a/test-harness/dependencies.lock +++ b/test-harness/dependencies.lock @@ -4,7 +4,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -16,17 +16,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -86,6 +88,7 @@ "com.netflix.conductor:conductor-client", "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -268,6 +271,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -286,7 +295,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -318,6 +328,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -350,7 +372,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -366,7 +389,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -378,17 +401,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -448,6 +473,7 @@ "com.netflix.conductor:conductor-client", "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -630,6 +656,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -648,7 +680,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -680,6 +713,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -712,7 +757,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -728,7 +774,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -740,17 +786,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -810,6 +858,7 @@ "com.netflix.conductor:conductor-client", "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -992,6 +1041,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -1010,7 +1065,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1042,6 +1098,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1074,7 +1142,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" }, @@ -1090,7 +1159,7 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-client" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -1102,17 +1171,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.424" + "locked": "1.11.427" }, "com.fasterxml.jackson.core:jackson-core": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.7.5" }, "com.fasterxml.jackson.core:jackson-databind": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "2.8.7" }, @@ -1172,6 +1243,7 @@ "com.netflix.conductor:conductor-client", "com.netflix.conductor:conductor-contribs", "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence", "com.netflix.conductor:conductor-jersey" ], "project": true @@ -1354,6 +1426,12 @@ ], "locked": "1.1.1" }, + "joda-time:joda-time": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.9.5" + }, "junit:junit-dep": { "locked": "4.10", "requested": "4.10" @@ -1372,7 +1450,8 @@ }, "org.apache.commons:commons-lang3": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" + "com.netflix.conductor:conductor-core", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "3.6" }, @@ -1404,6 +1483,18 @@ "locked": "9.3.9.v20160517", "requested": "9.3.9.v20160517" }, + "org.elasticsearch.client:elasticsearch-rest-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, + "org.elasticsearch.client:elasticsearch-rest-high-level-client": { + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12" + }, "org.elasticsearch.client:transport": { "firstLevelTransitive": [ "com.netflix.conductor:conductor-es5-persistence" @@ -1436,7 +1527,8 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ - "com.netflix.conductor:conductor-common" + "com.netflix.conductor:conductor-common", + "com.netflix.conductor:conductor-es5-persistence" ], "locked": "1.7.25" },