diff --git a/.forgejo/workflows/build-container.yaml b/.forgejo/workflows/build-container.yaml index fe6b000..efa9007 100644 --- a/.forgejo/workflows/build-container.yaml +++ b/.forgejo/workflows/build-container.yaml @@ -73,10 +73,6 @@ jobs: needs: detect if: needs.detect.outputs.dagger != '[]' runs-on: k8s - env: - # Disable Python SDK OTLP metrics exporter — the Dagger engine's local - # OTLP endpoint returns 500s, causing ~9s retry cycles per minute. - OTEL_METRICS_EXPORTER: none strategy: matrix: container: ${{ fromJson(needs.detect.outputs.dagger) }} diff --git a/docs/changelog.d/+dagger-otel-metrics-fix.bugfix.md b/docs/changelog.d/+dagger-otel-metrics-fix.bugfix.md new file mode 100644 index 0000000..6c02765 --- /dev/null +++ b/docs/changelog.d/+dagger-otel-metrics-fix.bugfix.md @@ -0,0 +1 @@ +Fix OTEL metrics exporter warnings in Dagger builds by hard-overriding the env var before SDK init. diff --git a/src/blumeops/main.py b/src/blumeops/main.py index 56595e2..9f60fd4 100644 --- a/src/blumeops/main.py +++ b/src/blumeops/main.py @@ -1,9 +1,12 @@ import os from pathlib import Path -# Disable OTLP metrics exporter before the Dagger SDK initializes OpenTelemetry. -# The Dagger engine's local OTLP endpoint returns 500s, causing ~11s retry delays. -os.environ.setdefault("OTEL_METRICS_EXPORTER", "none") +# Force-disable OTLP metrics exporter before the Dagger SDK initializes +# OpenTelemetry. The engine shim may set OTEL_METRICS_EXPORTER=otlp before +# our module loads, so setdefault won't work — we need a hard override. +# Without this, the engine's local OTLP endpoint returns 500s on metrics, +# causing ~9s retry cycles per pipeline step. +os.environ["OTEL_METRICS_EXPORTER"] = "none" import dagger from dagger import dag, function, object_type