From 23993ec6a5793234a5ddedab8a71164dd9929a85 Mon Sep 17 00:00:00 2001 From: simpleqt <89645338+simpleqt@users.noreply.github.com> Date: Sat, 12 Sep 2026 00:12:34 +0800 Subject: [PATCH 1/2] fix(task_manager): log non-retryable 4xx score/trace batch drops Previously, a non-retryable 4xx (e.g. 401 after key rotation, 400 validation) caused execute_task_with_backoff to silently return, permanently losing every score and trace event in the batch with no log or exception. Now raises so handle_exception logs the loss. --- langfuse/_task_manager/score_ingestion_consumer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/langfuse/_task_manager/score_ingestion_consumer.py b/langfuse/_task_manager/score_ingestion_consumer.py index 1dce00f80..b1854c2ba 100644 --- a/langfuse/_task_manager/score_ingestion_consumer.py +++ b/langfuse/_task_manager/score_ingestion_consumer.py @@ -187,7 +187,10 @@ def execute_task_with_backoff(batch: List[Any]) -> None: and 400 <= int(e.status) < 500 and int(e.status) != 429 # retry if rate-limited ): - return + # Non-retryable 4xx: the batch is permanently lost. + # Raise so handle_exception logs the loss instead of + # silently pretending the batch was delivered. + raise e raise e From 870f0f27804c590c5819a34daffb571b433a7e67 Mon Sep 17 00:00:00 2001 From: simpleqt <89645338+simpleqt@users.noreply.github.com> Date: Sat, 12 Sep 2026 00:15:27 +0800 Subject: [PATCH 2/2] docs(client): warn when sample_rate is silently ignored due to pre-registered OTel provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Users setting Langfuse(sample_rate=0.1) in an OTel-instrumented app get 100% sampling because the tracer provider is external. The init log claims sample_rate=0.1 is active — misleading. Added an explicit warning matching the id_generator ignored-warning pattern. --- langfuse/_client/resource_manager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/langfuse/_client/resource_manager.py b/langfuse/_client/resource_manager.py index a61101fe3..8c9d5c41b 100644 --- a/langfuse/_client/resource_manager.py +++ b/langfuse/_client/resource_manager.py @@ -677,6 +677,11 @@ def _init_tracer_provider( otel_trace_api.set_tracer_provider(provider) else: + if sample_rate is not None and sample_rate < 1: + langfuse_logger.warning( + "Configuration: sample_rate was ignored because an OpenTelemetry TracerProvider is already registered. " + "Configure the sampler on your own TracerProvider instead." + ) if id_generator is not None: langfuse_logger.warning( "Configuration: id_generator was ignored because an OpenTelemetry TracerProvider is already registered. "