diff --git a/contribs/dependencies.lock b/contribs/dependencies.lock index 81ac30b343..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.415", + "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.415", + "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.415", + "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.415", + "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.415", + "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.415", + "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.415", + "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.415", + "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.415", + "locked": "1.11.427", "requested": "latest.release" }, "com.fasterxml.jackson.core:jackson-core": { 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/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 3b0573d567..88655aeb0b 100644 --- a/es5-persistence/dependencies.lock +++ b/es5-persistence/dependencies.lock @@ -1,906 +1,506 @@ { "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.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: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.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": [ - "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.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: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.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": [ - "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.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: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.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": [ - "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.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: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.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": [ - "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" + "locked": "4.1.0", + "requested": "4.1.0" }, - "com.spotify:completable-futures": { - "firstLevelTransitive": [ - "com.netflix.conductor:conductor-core" - ], - "locked": "0.3.1" + "com.netflix.conductor:conductor-common": { + "project": true + }, + "com.netflix.conductor:conductor-core": { + "project": true }, "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.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: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.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": [ - "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.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: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.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", "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.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: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.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", "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.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: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.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", "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,31 +599,66 @@ ], "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": { - "locked": "2.9.1", - "requested": "2.9.1" + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "2.11.1", + "requested": "2.11.1" }, "org.apache.logging.log4j:log4j-core": { - "locked": "2.9.1", - "requested": "2.9.1" + "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": { - "locked": "5.6.8", - "requested": "5.6.8" + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12", + "requested": "5.6.12" }, "org.elasticsearch:elasticsearch": { - "locked": "5.6.8", - "requested": "5.6.8" + "firstLevelTransitive": [ + "com.netflix.conductor:conductor-es5-persistence" + ], + "locked": "5.6.12", + "requested": "5.6.12" }, "org.mockito:mockito-all": { "locked": "1.10.0", @@ -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-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java new file mode 100644 index 0000000000..239d32691a --- /dev/null +++ b/es5-persistence/src/main/java/com/netflix/conductor/dao/es5/index/ElasticSearchRestDAOV5.java @@ -0,0 +1,665 @@ +package com.netflix.conductor.dao.es5.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.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 ElasticSearchRestDAOV5 implements IndexDAO { + + private static Logger logger = LoggerFactory.getLogger(ElasticSearchRestDAOV5.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 = ElasticSearchRestDAOV5.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 ElasticSearchRestDAOV5(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-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java new file mode 100644 index 0000000000..658bfcba68 --- /dev/null +++ b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/TestConfiguration.java @@ -0,0 +1,123 @@ +package com.netflix.conductor.dao.es5; + +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-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java new file mode 100644 index 0000000000..6da7247212 --- /dev/null +++ b/es5-persistence/src/test/java/com/netflix/conductor/dao/es5/index/TestElasticSearchRestDAOV5.java @@ -0,0 +1,178 @@ +package com.netflix.conductor.dao.es5.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.es5.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 TestElasticSearchRestDAOV5 { + + private static Logger logger = LoggerFactory.getLogger(TestElasticSearchRestDAOV5.class); + + private static RestClient restClient; + private static ElasticSearchRestDAOV5 indexDAO; + + private Workflow workflow; + + @BeforeClass + public static void setup() throws Exception { + + EmbeddedElasticSearchV5.start(); + + Configuration configuration = new TestConfiguration(); + ElasticSearchModuleV5 esRestModule = new ElasticSearchModuleV5(true); + + restClient = esRestModule.getRestClient(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 ElasticSearchRestDAOV5(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-persistence/src/test/resources/log4j.properties b/es5-persistence/src/test/resources/log4j.properties new file mode 100644 index 0000000000..378b3d24f0 --- /dev/null +++ b/es5-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..77bc9356d7 100644 --- a/server/dependencies.lock +++ b/server/dependencies.lock @@ -10,17 +10,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "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" }, @@ -225,14 +235,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", @@ -242,17 +252,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -503,14 +536,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", @@ -520,17 +553,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -781,14 +837,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", @@ -798,17 +854,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -1059,14 +1138,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", @@ -1076,17 +1155,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -1397,14 +1499,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", @@ -1414,17 +1516,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -1675,14 +1800,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", @@ -1692,17 +1817,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -1953,14 +2101,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, @@ -1970,17 +2118,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -2235,14 +2406,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", @@ -2252,17 +2423,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -2521,14 +2715,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", @@ -2538,17 +2732,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -2807,14 +3024,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", @@ -2824,17 +3041,29 @@ "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" ], - "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": [ @@ -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.415" + "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" }, @@ -3093,14 +3333,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", @@ -3110,17 +3350,29 @@ "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" ], - "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": [ @@ -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 48af63d348..0118aaecb2 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,27 @@ private void init(String dynoClusterName, List dynoHosts) { case memory: jedis = new JedisMock(); try { - if (conductorConfig.getProperty("workflow.elasticsearch.version", "2").equals("5")){ - EmbeddedElasticSearchV5.start(); - } - else { - // Use ES2 as default. - EmbeddedElasticSearch.start(); + + String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); + boolean elasticSearchEmbedded = Boolean.parseBoolean(conductorConfig.getProperty("workflow.elasticsearch.embedded", "true")); + + if (elasticSearchEmbedded) { + if ("5".equals(elasticSearchVersion)) { + EmbeddedElasticSearchV5.start(); + } else { + EmbeddedElasticSearch.start(); + } } + if(System.getProperty("workflow.elasticsearch.url") == null) { - System.setProperty("workflow.elasticsearch.url", "localhost:9300"); + + String elasticSearchTransport = conductorConfig.getProperty("workflow.elasticsearch.transport", "tcp"); + + String esUrl = "localhost:9300"; + if ("5".equals(elasticSearchVersion) && "rest".equalsIgnoreCase(elasticSearchTransport)) { + 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/server/src/main/java/com/netflix/conductor/server/ServerModule.java b/server/src/main/java/com/netflix/conductor/server/ServerModule.java index 8ec863c645..2829ca11e3 100644 --- a/server/src/main/java/com/netflix/conductor/server/ServerModule.java +++ b/server/src/main/java/com/netflix/conductor/server/ServerModule.java @@ -88,10 +88,13 @@ protected void configure() { install(new RedisWorkflowModule(conductorConfig, dynoConn, hostSupplier)); } - if (conductorConfig.getProperty("workflow.elasticsearch.version", "2").equals("5")){ - install(new ElasticSearchModuleV5()); - } - else { + String elasticSearchVersion = conductorConfig.getProperty("workflow.elasticsearch.version", "2"); + if ("5".equals(elasticSearchVersion)) { + + 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 42fc5d9bbb..ca3052713d 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', '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..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.415" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -16,17 +16,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "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" }, @@ -295,14 +305,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": [ @@ -318,18 +328,30 @@ "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" ], - "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": [ @@ -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.415" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -378,17 +401,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "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" }, @@ -657,14 +690,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": [ @@ -680,18 +713,30 @@ "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" ], - "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": [ @@ -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.415" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -740,17 +786,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "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" }, @@ -1019,14 +1075,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": [ @@ -1042,18 +1098,30 @@ "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" ], - "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": [ @@ -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.415" + "locked": "1.11.427" }, "com.amazonaws:aws-java-sdk-s3": { "firstLevelTransitive": [ @@ -1102,17 +1171,19 @@ "firstLevelTransitive": [ "com.netflix.conductor:conductor-contribs" ], - "locked": "1.11.415" + "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" }, @@ -1381,14 +1460,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": [ @@ -1404,18 +1483,30 @@ "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" ], - "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": [ @@ -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" }, 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'