diff --git a/datadog-sidecar-ffi/src/lib.rs b/datadog-sidecar-ffi/src/lib.rs index 1d6085fc1b..7cc6a3267d 100644 --- a/datadog-sidecar-ffi/src/lib.rs +++ b/datadog-sidecar-ffi/src/lib.rs @@ -632,6 +632,8 @@ pub unsafe extern "C" fn ddog_sidecar_session_set_config( process_tags: &libdd_common_ffi::Vec, hostname: ffi::CharSlice, root_service: ffi::CharSlice, + root_session_id: ffi::CharSlice, + parent_session_id: ffi::CharSlice, ) -> MaybeError { let session_id_str: String = session_id.to_utf8_lossy().into(); let session_config = SessionConfig { @@ -676,6 +678,16 @@ pub unsafe extern "C" fn ddog_sidecar_session_set_config( span_kinds_stats_computed: vec![], hostname: hostname.to_utf8_lossy().into(), root_service: root_service.to_utf8_lossy().into(), + root_session_id: if root_session_id.is_empty() { + None + } else { + Some(root_session_id.to_utf8_lossy().into()) + }, + parent_session_id: if parent_session_id.is_empty() { + None + } else { + Some(parent_session_id.to_utf8_lossy().into()) + }, }; #[cfg(unix)] try_c!(blocking::set_session_config( diff --git a/datadog-sidecar-ffi/tests/sidecar.rs b/datadog-sidecar-ffi/tests/sidecar.rs index 4d282ad4fe..42653f0da4 100644 --- a/datadog-sidecar-ffi/tests/sidecar.rs +++ b/datadog-sidecar-ffi/tests/sidecar.rs @@ -113,6 +113,8 @@ fn test_ddog_sidecar_register_app() { &process_tags, "".into(), "".into(), + "".into(), + "".into(), ) .unwrap_none(); @@ -167,6 +169,8 @@ fn test_ddog_sidecar_register_app() { &process_tags, "".into(), "".into(), + "".into(), + "".into(), ) .unwrap_none(); diff --git a/datadog-sidecar/src/service/mod.rs b/datadog-sidecar/src/service/mod.rs index 0c5a0d2951..bc5930fc78 100644 --- a/datadog-sidecar/src/service/mod.rs +++ b/datadog-sidecar/src/service/mod.rs @@ -73,6 +73,8 @@ pub struct SessionConfig { pub hostname: String, /// Process-level service name (from `DD_SERVICE`), used as the stats concentrator key. pub root_service: String, + pub root_session_id: Option, + pub parent_session_id: Option, } #[derive(Debug, Deserialize, Serialize)] diff --git a/datadog-sidecar/src/service/sidecar_server.rs b/datadog-sidecar/src/service/sidecar_server.rs index 6f5c6b9c7e..e4841081a6 100644 --- a/datadog-sidecar/src/service/sidecar_server.rs +++ b/datadog-sidecar/src/service/sidecar_server.rs @@ -651,6 +651,9 @@ impl SidecarInterface for ConnectionSidecarHandler { cfg.telemetry_heartbeat_interval = config.telemetry_heartbeat_interval; cfg.telemetry_extended_heartbeat_interval = config.telemetry_extended_heartbeat_interval; + cfg.session_id = Some(session_id.clone()); + cfg.parent_session_id = config.parent_session_id; + cfg.root_session_id = config.root_session_id; }); session.modify_trace_config(|cfg| { let endpoint = get_product_endpoint( diff --git a/datadog-sidecar/src/service/telemetry.rs b/datadog-sidecar/src/service/telemetry.rs index 9ab9d3fce0..98e93357c4 100644 --- a/datadog-sidecar/src/service/telemetry.rs +++ b/datadog-sidecar/src/service/telemetry.rs @@ -103,6 +103,7 @@ impl TelemetryCachedClient { ); builder.runtime_id = Some(instance_id.runtime_id.clone()); + builder.application.env = Some(env.to_string()); builder.application.process_tags = (!process_tags.is_empty()).then(|| { process_tags