From 2896bb90a96a4e6608e119c3344603a89e9e261c Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:07:13 +0200 Subject: [PATCH] fix: usage events never flushed to ClickHouse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UsageFlushScheduler was a @Component with @ConditionalOnBean, but ClickHouseUsageTracker is created via @Bean — component scan runs first, so the condition always evaluated false. Events accumulated in the WriteBuffer but flush() was never called. Moved scheduler to @Bean in StorageBeanConfig with the same @ConditionalOnProperty guard as the tracker. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../server/app/analytics/UsageFlushScheduler.java | 4 ---- .../com/cameleer3/server/app/config/StorageBeanConfig.java | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java index 3388a81a..d7a81023 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java @@ -3,12 +3,8 @@ package com.cameleer3.server.app.analytics; import com.cameleer3.server.app.storage.ClickHouseUsageTracker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; -@Component -@ConditionalOnBean(ClickHouseUsageTracker.class) public class UsageFlushScheduler { private static final Logger log = LoggerFactory.getLogger(UsageFlushScheduler.class); 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 9d0b0f6c..4ca84bb0 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 @@ -157,4 +157,11 @@ public class StorageBeanConfig { ClickHouseUsageTracker usageTracker) { return new com.cameleer3.server.app.analytics.UsageTrackingInterceptor(usageTracker); } + + @Bean + @ConditionalOnProperty(name = "clickhouse.enabled", havingValue = "true") + public com.cameleer3.server.app.analytics.UsageFlushScheduler usageFlushScheduler( + ClickHouseUsageTracker usageTracker) { + return new com.cameleer3.server.app.analytics.UsageFlushScheduler(usageTracker); + } }