From bc1c71277cc73e964a961dad81b371d2cf43cb74 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:44:02 +0200 Subject: [PATCH] fix: resolve duplicate ExecutionStore bean conflict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ClickHouseExecutionStore implements ExecutionStore, so the concrete bean already satisfies the interface — remove redundant wrapper bean. Align ChunkAccumulator and ExecutionFlushScheduler conditions to cameleer.storage.executions flag. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../server/app/config/StorageBeanConfig.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java index b0fc1143..78827a60 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java @@ -88,19 +88,13 @@ public class StorageBeanConfig { return new PostgresMetricsQueryStore(jdbc); } - // ── ClickHouse Execution Store ────────────────────────────────────── - - @Bean - @ConditionalOnProperty(name = "clickhouse.enabled", havingValue = "true") - public ClickHouseExecutionStore clickHouseExecutionStore( - @Qualifier("clickHouseJdbcTemplate") JdbcTemplate clickHouseJdbc) { - return new ClickHouseExecutionStore(clickHouseJdbc); - } + // ── Execution Store ────────────────────────────────────────────────── @Bean @ConditionalOnProperty(name = "cameleer.storage.executions", havingValue = "clickhouse", matchIfMissing = true) - public ExecutionStore executionStoreClickHouse(ClickHouseExecutionStore chStore) { - return chStore; // Same instance, also exposed as ExecutionStore + public ClickHouseExecutionStore clickHouseExecutionStore( + @Qualifier("clickHouseJdbcTemplate") JdbcTemplate clickHouseJdbc) { + return new ClickHouseExecutionStore(clickHouseJdbc); } @Bean @@ -110,7 +104,7 @@ public class StorageBeanConfig { } @Bean - @ConditionalOnProperty(name = "clickhouse.enabled", havingValue = "true") + @ConditionalOnProperty(name = "cameleer.storage.executions", havingValue = "clickhouse", matchIfMissing = true) public ChunkAccumulator chunkAccumulator( WriteBuffer executionBuffer, WriteBuffer processorBatchBuffer) { @@ -121,7 +115,7 @@ public class StorageBeanConfig { } @Bean - @ConditionalOnProperty(name = "clickhouse.enabled", havingValue = "true") + @ConditionalOnProperty(name = "cameleer.storage.executions", havingValue = "clickhouse", matchIfMissing = true) public ExecutionFlushScheduler executionFlushScheduler( WriteBuffer executionBuffer, WriteBuffer processorBatchBuffer,