Skip to content

Commit a41b623

Browse files
khanayan123bwoebi
andauthored
feat(sidecar): wire telemetry_extended_heartbeat_interval through SessionConfig (#1882)
## Summary Add `telemetry_extended_heartbeat_interval` to the sidecar's `SessionConfig` and FFI layer so that callers (e.g. PHP tracer) can configure the extended heartbeat interval. The telemetry worker already supports this field in its `Config` struct, but the sidecar was not passing it through from `SessionConfig` -> `modify_telemetry_config`. This meant sidecar consumers could not control the cadence of `app-extended-heartbeat` events. **Changes:** - `datadog-sidecar/src/service/mod.rs`: add `telemetry_extended_heartbeat_interval: Duration` to `SessionConfig` - `datadog-sidecar/src/service/sidecar_server.rs`: set `cfg.telemetry_extended_heartbeat_interval` in `modify_telemetry_config` - `datadog-sidecar-ffi/src/lib.rs`: add `telemetry_extended_heartbeat_interval_millis: u64` param to `ddog_sidecar_session_set_config` Companion dd-trace-php PR: DataDog/dd-trace-php#3800 Co-authored-by: bwoebi <bob.weinand@datadoghq.com>
1 parent 2d2bc4f commit a41b623

File tree

5 files changed

+14
-3
lines changed

5 files changed

+14
-3
lines changed

datadog-sidecar-ffi/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ pub unsafe extern "C" fn ddog_sidecar_session_set_config(
614614
flush_interval_milliseconds: u32,
615615
remote_config_poll_interval_millis: u32,
616616
telemetry_heartbeat_interval_millis: u32,
617+
telemetry_extended_heartbeat_interval_millis: u64,
617618
force_flush_size: usize,
618619
force_drop_size: usize,
619620
log_level: ffi::CharSlice,
@@ -643,6 +644,9 @@ pub unsafe extern "C" fn ddog_sidecar_session_set_config(
643644
telemetry_heartbeat_interval: Duration::from_millis(
644645
telemetry_heartbeat_interval_millis as u64,
645646
),
647+
telemetry_extended_heartbeat_interval: Duration::from_millis(
648+
telemetry_extended_heartbeat_interval_millis,
649+
),
646650
force_flush_size,
647651
force_drop_size,
648652
log_level: log_level.to_utf8_lossy().into(),

datadog-sidecar-ffi/tests/sidecar.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ fn test_ddog_sidecar_register_app() {
9898
1000,
9999
1000000,
100100
1,
101+
86400000,
101102
10000000,
102103
10000000,
103104
"".into(),
@@ -151,6 +152,7 @@ fn test_ddog_sidecar_register_app() {
151152
1000,
152153
1000000,
153154
1,
155+
86400000,
154156
10000000,
155157
10000000,
156158
"".into(),

datadog-sidecar/src/service/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ pub struct SessionConfig {
5858
pub flush_interval: Duration,
5959
pub remote_config_poll_interval: Duration,
6060
pub telemetry_heartbeat_interval: Duration,
61+
pub telemetry_extended_heartbeat_interval: Duration,
6162
pub force_flush_size: usize,
6263
pub force_drop_size: usize,
6364
pub log_level: String,

datadog-sidecar/src/service/sidecar_server.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,12 +640,16 @@ impl SidecarInterface for ConnectionSidecarHandler {
640640
*session.process_tags.lock_or_panic() = config.process_tags.clone();
641641
session.modify_telemetry_config(|cfg| {
642642
cfg.telemetry_heartbeat_interval = config.telemetry_heartbeat_interval;
643+
cfg.telemetry_extended_heartbeat_interval =
644+
config.telemetry_extended_heartbeat_interval;
643645
let endpoint = get_product_endpoint(
644646
libdd_telemetry::config::PROD_INTAKE_SUBDOMAIN,
645647
&config.endpoint,
646648
);
647649
cfg.set_endpoint(endpoint).ok();
648650
cfg.telemetry_heartbeat_interval = config.telemetry_heartbeat_interval;
651+
cfg.telemetry_extended_heartbeat_interval =
652+
config.telemetry_extended_heartbeat_interval;
649653
});
650654
session.modify_trace_config(|cfg| {
651655
let endpoint = get_product_endpoint(

libdd-telemetry/src/worker/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -483,9 +483,9 @@ impl TelemetryWorker {
483483
self.data.integrations.unflush_stored();
484484
self.data.configurations.unflush_stored();
485485

486-
let app_started = data::Payload::AppStarted(self.build_app_started());
487-
match self.send_payload(&app_started).await {
488-
Ok(()) => self.payload_sent_success(&app_started),
486+
let extended_hb = data::Payload::AppExtendedHeartbeat(self.build_app_started());
487+
match self.send_payload(&extended_hb).await {
488+
Ok(()) => self.payload_sent_success(&extended_hb),
489489
Err(err) => self.log_err(&err),
490490
}
491491
#[allow(clippy::unwrap_used)]

0 commit comments

Comments
 (0)