Commit aef8944
fix(telemetry): include dependencies and integrations in app-extended-heartbeat
Per the instrumentation-telemetry-api-docs schema, app-extended-heartbeat
must carry the full state — configuration, dependencies, and integrations —
so the agent can reconstruct application records on data loss. dd-trace-go
and dd-trace-dotnet both ship the full triple. The Rust worker, however,
defines AppStarted as a configuration-only struct and reuses it for
app-extended-heartbeat, so dependencies and integrations are not included
in the heartbeat payload.
The ExtendedHeartbeat handler does call unflush_stored() on all three
collectors, evidently with the intent of re-emitting the full state.
Because the heartbeat payload omits the re-queued dependencies and
integrations and app_started_sent_success only pops configurations from
unflushed, the re-queued items remain in unflushed and are sent on the
next FlushData as a duplicate app-integrations-change /
app-dependencies-loaded.
Updating the shared AppStarted struct, build_app_started, and
app_started_sent_success addresses both Lifecycle(Start) and
Lifecycle(ExtendedHeartbeat) call sites.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 4ae8ebe commit aef8944
2 files changed
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
673 | 673 | | |
674 | 674 | | |
675 | 675 | | |
| 676 | + | |
| 677 | + | |
676 | 678 | | |
677 | 679 | | |
678 | 680 | | |
679 | 681 | | |
680 | 682 | | |
681 | 683 | | |
682 | 684 | | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
683 | 691 | | |
684 | 692 | | |
685 | 693 | | |
| |||
0 commit comments