Skip to content

feat(core-nodes): emit df_engine.component.shutdown event from OTLP exporters#3349

Draft
cijothomas wants to merge 2 commits into
open-telemetry:mainfrom
cijothomas:cijothomas/component-shutdown-event
Draft

feat(core-nodes): emit df_engine.component.shutdown event from OTLP exporters#3349
cijothomas wants to merge 2 commits into
open-telemetry:mainfrom
cijothomas:cijothomas/component-shutdown-event

Conversation

@cijothomas

@cijothomas cijothomas commented Jun 24, 2026

Copy link
Copy Markdown
Member

Adds a structured shutdown event to the OTLP gRPC and HTTP exporters, modeled after the OTel SDK otel.sdk.component.shutdown convention (open-telemetry/semantic-conventions#3723).

Changes

  • In-tree semconv event definition (semconv/groups/event.component.shutdown.yaml) with full attribute declarations (otel.component.type, otel.component.shutdown.result, otel.component.shutdown.duration).
  • OTLP gRPC exporter — replaces bare otel_info!("otlp.exporter.grpc.shutdown") with timed structured event.
  • OTLP HTTP exporter — same pattern.
  • Trigger script (99_df_engine.component.shutdown.sh) — POSTs to admin /api/v1/groups/shutdown?wait=true so the event fires in CI before the hard-kill. Prefixed 99_ to ensure it runs last in the trigger glob.

Notes

  • result is always success today (the drain loop runs to completion). A follow-up can check the deadline to detect timed_out.
  • duration is measured from message receipt, not from shutdown initiation (TODO in code — requires threading initiated_at through NodeControlMsg).
  • df_engine prefix is provisional (product name unsettled; TODO in YAML).

Related

  • #2325 — Handle OS signals (SIGTERM/SIGINT) for graceful pipeline shutdown. Once that lands, the shutdown event will fire naturally on SIGTERM without needing the admin API trigger.

…xporters

Adds structured shutdown event with otel.component.type,
otel.component.shutdown.result, and otel.component.shutdown.duration.
Modeled after the OTel SDK otel.sdk.component.shutdown convention
(open-telemetry/semantic-conventions#3723).

- In-tree semconv event definition with attributes
- Trigger script (99_ prefix ensures it runs last)
- Emitted from both otlp_grpc_exporter and otlp_http_exporter
@github-actions github-actions Bot added area:pipeline Rust Pipeline Related Tasks lang:rust Pull requests that update Rust code area:exporter Core and Contrib exporter nodes labels Jun 24, 2026
@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.19%. Comparing base (2785c4f) to head (569c857).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3349      +/-   ##
==========================================
- Coverage   86.20%   86.19%   -0.01%     
==========================================
  Files         739      739              
  Lines      290493   290493              
==========================================
- Hits       250420   250393      -27     
- Misses      39549    39576      +27     
  Partials      524      524              
Components Coverage Δ
otap-dataflow 87.25% <ø> (-0.02%) ⬇️
query_engine 89.58% <ø> (ø)
otel-arrow-go 52.45% <ø> (ø)
quiver 92.19% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:exporter Core and Contrib exporter nodes area:pipeline Rust Pipeline Related Tasks lang:rust Pull requests that update Rust code

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant