The GitHub Actions job "Notify uv.lock conflicts" on airflow.git/main has 
failed.
Run started by GitHub user ashb (triggered by ashb).

Head commit for run:
f481758f04cc28d1a417c4671b8705cd6e5f83e8 / Ash Berlin-Taylor <[email protected]>
Propagate task OTel trace context through IPC and into execution API requests 
(#66151)

The supervisor makes HTTP calls (XCom pushes, RTIF writes, connection
lookups) on behalf of the task process via a Unix socket IPC channel.
Without explicit propagation, those calls either float under the
supervisor's own span or are unparented entirely — the task's trace
context never crosses the process boundary.

This commit wires the full chain:

IPC leg (task process → supervisor):
- Add traceparent: str | None = None field to _RequestFrame
- _make_frame() injects the task runner's active W3C traceparent into
  every outgoing IPC frame via TraceContextTextMapPropagator.inject()
- handle_requests() extracts the traceparent and calls
  otel_context.attach() before dispatching each request, restoring the
  task's trace context in the supervisor process for that request's
  lifetime
- TriggerCommsDecoder.asend() now calls _make_frame() instead of
  constructing _RequestFrame directly, so trigger IPC frames carry
  the active span's traceparent too

HTTP leg (supervisor → execution API):
- inject_trace_context event hook on the httpx Client propagates the
  currently-active span's traceparent header on every outgoing request,
  linking server-side spans to the correct task span
- _log_and_trace_retry records http.retry events on the active span
  alongside the existing log warning

Dependency cleanup:
- Move opentelemetry-api>=1.27.0 from [otel] optional extras to base
  [dependencies] in shared/observability — it flows unconditionally into
  task-sdk via shared_distributions, the same way airflow-core already
  has it unconditionally
- Replace try/except ImportError guards and _NoOpTracer fallbacks in
  comms.py, supervisor.py, and client.py with direct imports; inject()
  and get_current_span() are no-ops when no TracerProvider is configured,
  so the guards were only testing "is OTel installed?" not "is it enabled?"
- Introduce _FrameMixin (plain Python mixin, not a msgspec.Struct) to
  share _encoder and as_bytes() between _RequestFrame and _ResponseFrame

Report URL: https://github.com/apache/airflow/actions/runs/25375700516

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to