From 2896bc367d86af4c23c446fe21d17f1a4f16fa9d Mon Sep 17 00:00:00 2001 From: Sofian Belahouel Date: Thu, 26 Mar 2026 16:24:27 +0100 Subject: [PATCH 1/2] Fix missing Elasticsearch indexing type in Docker ES7 configs Docker ES7-backed configs enabled indexing and set Elasticsearch version/url, but did not set conductor.indexing.type=elasticsearch. Because the ES7 IndexDAO condition requires that property, the MySQL docker-compose example could fail at startup with a missing IndexDAO bean. This change: - adds conductor.indexing.type=elasticsearch to ES7 docker configs - updates the docs to show the required property - adds a regression test for the ES7 condition --- docs/devguide/running/deploy.md | 1 + .../config/ElasticSearchConditionsTest.java | 85 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java diff --git a/docs/devguide/running/deploy.md b/docs/devguide/running/deploy.md index 56e7dacedd..a23f5276a0 100644 --- a/docs/devguide/running/deploy.md +++ b/docs/devguide/running/deploy.md @@ -206,6 +206,7 @@ conductor.elasticsearch.version=0 ```properties conductor.indexing.enabled=true +conductor.indexing.type=elasticsearch conductor.elasticsearch.url=http://es-host:9200 conductor.elasticsearch.version=7 conductor.elasticsearch.indexName=conductor diff --git a/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java new file mode 100644 index 0000000000..9e7daf334d --- /dev/null +++ b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java @@ -0,0 +1,85 @@ +/* + * Copyright 2026 Conductor Authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.netflix.conductor.es7.config; + +import org.junit.Test; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class ElasticSearchConditionsTest { + + private final ApplicationContextRunner contextRunner = + new ApplicationContextRunner() + .withUserConfiguration(ConditionalTestConfiguration.class); + + @Test + public void shouldActivateForElasticsearchV7Selector() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", + "conductor.indexing.type=elasticsearch", + "conductor.elasticsearch.version=7") + .run(context -> assertTrue(context.containsBean("es7Marker"))); + } + + @Test + public void shouldActivateWhenVersionIsImplicit() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.indexing.type=elasticsearch") + .run(context -> assertTrue(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateWhenIndexingIsDisabled() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=false", + "conductor.indexing.type=elasticsearch", + "conductor.elasticsearch.version=7") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateForLegacyVersionPropertyOnly() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.elasticsearch.version=7") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateForElasticsearch8Selector() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.indexing.type=elasticsearch8") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Configuration(proxyBeanMethods = false) + @Conditional(ElasticSearchConditions.ElasticSearchV7Enabled.class) + static class ConditionalTestConfiguration { + + @Bean + Marker es7Marker() { + return new Marker(); + } + } + + static class Marker {} +} From be276e6572c88d9172150869607303aa20c557b1 Mon Sep 17 00:00:00 2001 From: Sofian Belahouel Date: Fri, 24 Apr 2026 14:42:42 +0200 Subject: [PATCH 2/2] Address ES7 condition test review nits --- .../conductor/es7/config/ElasticSearchConditionsTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java index 9e7daf334d..ff8330730e 100644 --- a/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java +++ b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java @@ -39,6 +39,7 @@ public void shouldActivateForElasticsearchV7Selector() { @Test public void shouldActivateWhenVersionIsImplicit() { + // The ES7 condition treats conductor.elasticsearch.version as version 7 when omitted. contextRunner .withPropertyValues( "conductor.indexing.enabled=true", "conductor.indexing.type=elasticsearch") @@ -76,10 +77,10 @@ public void shouldNotActivateForElasticsearch8Selector() { static class ConditionalTestConfiguration { @Bean - Marker es7Marker() { - return new Marker(); + Es7Marker es7Marker() { + return new Es7Marker(); } } - static class Marker {} + static class Es7Marker {} }