From deb56f7c66ee32819083a6e20d3eaa5e85071e6b Mon Sep 17 00:00:00 2001 From: Marc Pont Date: Tue, 25 Aug 2026 21:59:01 +0200 Subject: [PATCH] Fix: use separate env var for ClickHouse native port The analytics service talks to ClickHouse over two protocols but both read CLICKHOUSE_PORT. The Dockerfile pins it to 8123 (HTTP), so the clickhouse_driver clients hit the HTTP port and fail with "Code: 102. Unexpected packet from server", leaving NAV calculated for 0 funds. Those three call sites now read CLICKHOUSE_NATIVE_PORT (default 9000). Verified locally: NAV goes from 0 to 7 funds. --- aware-fund/services/analytics/Dockerfile | 1 + aware-fund/services/analytics/nav_calculator.py | 2 +- aware-fund/services/analytics/run_all.py | 5 +++-- aware-fund/services/analytics/scheduler.py | 2 +- deploy/docker-compose.prod.yaml | 1 + docker-compose.local.yaml | 1 + 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/aware-fund/services/analytics/Dockerfile b/aware-fund/services/analytics/Dockerfile index 67727df..be5145b 100644 --- a/aware-fund/services/analytics/Dockerfile +++ b/aware-fund/services/analytics/Dockerfile @@ -19,6 +19,7 @@ COPY notifications/ ./notifications/ # Environment defaults ENV CLICKHOUSE_HOST=clickhouse ENV CLICKHOUSE_PORT=8123 +ENV CLICKHOUSE_NATIVE_PORT=9000 ENV CLICKHOUSE_DATABASE=polybot ENV SCORING_INTERVAL_SECONDS=3600 ENV MIN_TRADES=10 diff --git a/aware-fund/services/analytics/nav_calculator.py b/aware-fund/services/analytics/nav_calculator.py index 7d2587a..6f93b17 100644 --- a/aware-fund/services/analytics/nav_calculator.py +++ b/aware-fund/services/analytics/nav_calculator.py @@ -500,7 +500,7 @@ def run_nav_calculation(): Called by scheduler or run_all.py every 5 minutes. """ ch_host = os.getenv('CLICKHOUSE_HOST', 'localhost') - ch_port = int(os.getenv('CLICKHOUSE_PORT', '9000')) + ch_port = int(os.getenv('CLICKHOUSE_NATIVE_PORT', '9000')) logger.info("Starting NAV calculation...") diff --git a/aware-fund/services/analytics/run_all.py b/aware-fund/services/analytics/run_all.py index 886c957..4bff197 100644 --- a/aware-fund/services/analytics/run_all.py +++ b/aware-fund/services/analytics/run_all.py @@ -16,7 +16,8 @@ Environment Variables: CLICKHOUSE_HOST - ClickHouse host (default: localhost) - CLICKHOUSE_PORT - ClickHouse port (default: 8123) + CLICKHOUSE_PORT - ClickHouse HTTP port (default: 8123) + CLICKHOUSE_NATIVE_PORT - ClickHouse native TCP port, used by NAV calc (default: 9000) CLICKHOUSE_DATABASE - Database name (default: polybot) """ @@ -692,7 +693,7 @@ def run_nav_calculation_job(ch_client) -> dict: # NAVCalculator uses clickhouse_driver, not clickhouse_connect ch_host = os.getenv('CLICKHOUSE_HOST', 'localhost') - ch_port = int(os.getenv('CLICKHOUSE_PORT', '9000')) + ch_port = int(os.getenv('CLICKHOUSE_NATIVE_PORT', '9000')) driver_client = Client(host=ch_host, port=ch_port) calculator = NAVCalculator(driver_client) diff --git a/aware-fund/services/analytics/scheduler.py b/aware-fund/services/analytics/scheduler.py index 8d3daff..657bfa9 100644 --- a/aware-fund/services/analytics/scheduler.py +++ b/aware-fund/services/analytics/scheduler.py @@ -177,7 +177,7 @@ def run_insider_detection(): # Create ClickHouse client ch_host = os.getenv('CLICKHOUSE_HOST', 'localhost') - ch_port = int(os.getenv('CLICKHOUSE_PORT', '9000')) + ch_port = int(os.getenv('CLICKHOUSE_NATIVE_PORT', '9000')) client = Client(host=ch_host, port=ch_port) # Run detection diff --git a/deploy/docker-compose.prod.yaml b/deploy/docker-compose.prod.yaml index 847f2db..6642ae0 100644 --- a/deploy/docker-compose.prod.yaml +++ b/deploy/docker-compose.prod.yaml @@ -165,6 +165,7 @@ services: environment: CLICKHOUSE_HOST: clickhouse CLICKHOUSE_PORT: 8123 + CLICKHOUSE_NATIVE_PORT: 9000 CLICKHOUSE_DATABASE: polybot SCORING_INTERVAL_SECONDS: 3600 LOG_LEVEL: INFO diff --git a/docker-compose.local.yaml b/docker-compose.local.yaml index da7afe2..a2eb490 100644 --- a/docker-compose.local.yaml +++ b/docker-compose.local.yaml @@ -149,6 +149,7 @@ services: environment: CLICKHOUSE_HOST: clickhouse CLICKHOUSE_PORT: 8123 + CLICKHOUSE_NATIVE_PORT: 9000 CLICKHOUSE_DATABASE: polybot SCORING_INTERVAL_SECONDS: 3600 LOG_LEVEL: INFO