From 8ded2d73f0928c3c87db280f974f45d33c2d891a Mon Sep 17 00:00:00 2001 From: GareArc Date: Thu, 5 Feb 2026 22:58:40 -0800 Subject: [PATCH] fix(telemetry): move EE guard to gateway routing level Prevents CE users from enqueueing EE-only events (all METRIC_LOG cases) to non-existent enterprise_telemetry Celery queue. - Add _should_drop_ee_only_event() check in emit() before routing - Remove redundant check from _emit_trace() - Single guard at gateway level protects both trace and metric/log paths --- api/enterprise/telemetry/gateway.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/enterprise/telemetry/gateway.py b/api/enterprise/telemetry/gateway.py index 837de0841a..73886e327e 100644 --- a/api/enterprise/telemetry/gateway.py +++ b/api/enterprise/telemetry/gateway.py @@ -86,6 +86,10 @@ class TelemetryGateway: logger.warning("Unknown telemetry case: %s, dropping event", case) return + if _should_drop_ee_only_event(route): + logger.debug("Dropping EE-only event: case=%s (EE disabled)", case) + return + logger.debug( "Gateway routing: case=%s, signal_type=%s, ce_eligible=%s", case, @@ -109,10 +113,6 @@ class TelemetryGateway: from core.ops.ops_trace_manager import TraceQueueManager as LocalTraceQueueManager from core.ops.ops_trace_manager import TraceTask - if _should_drop_ee_only_event(route): - logger.debug("Dropping enterprise-only trace event: case=%s (EE disabled)", case) - return - trace_task_name = CASE_TO_TRACE_TASK.get(case) if trace_task_name is None: logger.warning("No TraceTaskName mapping for case: %s", case)