Skip to content

Commit 3df62fd

Browse files
khanayan123claude
andauthored
Wire extended heartbeat interval through sidecar (#3800)
* Wire extended heartbeat interval through sidecar for PHP telemetry The libdatadog telemetry worker already supports telemetry_extended_heartbeat_interval in its Config, but the sidecar's SessionConfig and FFI layer did not expose it. This meant PHP (and any other sidecar consumer) could not configure the extended heartbeat interval, preventing app-extended-heartbeat events from being emitted at the desired cadence. Changes: - libdatadog sidecar: add telemetry_extended_heartbeat_interval to SessionConfig and propagate it into the telemetry Config inside modify_telemetry_config - libdatadog sidecar-ffi: add telemetry_extended_heartbeat_interval_millis parameter to ddog_sidecar_session_set_config - PHP ext: add DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL config (default 86400 s = 24 h) and pass it through the FFI call - C header: update ddog_sidecar_session_set_config signature Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Regenerate supported-configurations.json Add DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL entry to keep metadata in sync with ext/configuration.h. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c46963f commit 3df62fd

8 files changed

Lines changed: 40 additions & 3 deletions

File tree

Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components-rs/common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,9 @@ typedef enum ddog_TelemetryWorkerBuilderStrProperty {
10781078
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_RELEASE,
10791079
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_VERSION,
10801080
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_RUNTIME_ID,
1081+
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_SESSION_ID,
1082+
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_PARENT_SESSION_ID,
1083+
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_ROOT_SESSION_ID,
10811084
} ddog_TelemetryWorkerBuilderStrProperty;
10821085

10831086
typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;

components-rs/sidecar.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ ddog_MaybeError ddog_sidecar_session_set_config(struct ddog_SidecarTransport **t
200200
uint32_t flush_interval_milliseconds,
201201
uint32_t remote_config_poll_interval_millis,
202202
uint32_t telemetry_heartbeat_interval_millis,
203+
uint64_t telemetry_extended_heartbeat_interval_millis,
203204
uintptr_t force_flush_size,
204205
uintptr_t force_drop_size,
205206
ddog_CharSlice log_level,

components-rs/telemetry.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,15 @@ ddog_MaybeError ddog_telemetry_builder_with_str_host_kernel_version(struct ddog_
123123
ddog_MaybeError ddog_telemetry_builder_with_str_runtime_id(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
124124
ddog_CharSlice param);
125125

126+
ddog_MaybeError ddog_telemetry_builder_with_str_session_id(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
127+
ddog_CharSlice param);
128+
129+
ddog_MaybeError ddog_telemetry_builder_with_str_parent_session_id(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
130+
ddog_CharSlice param);
131+
132+
ddog_MaybeError ddog_telemetry_builder_with_str_root_session_id(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
133+
ddog_CharSlice param);
134+
126135
/**
127136
* Sets a property from it's string value.
128137
*
@@ -150,6 +159,12 @@ ddog_MaybeError ddog_telemetry_builder_with_str_runtime_id(struct ddog_Telemetry
150159
*
151160
* * runtime_id
152161
*
162+
* * session_id
163+
*
164+
* * parent_session_id
165+
*
166+
* * root_session_id
167+
*
153168
*
154169
*/
155170
ddog_MaybeError ddog_telemetry_builder_with_property_str(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
@@ -183,6 +198,12 @@ ddog_MaybeError ddog_telemetry_builder_with_property_str(struct ddog_TelemetryWo
183198
*
184199
* * runtime_id
185200
*
201+
* * session_id
202+
*
203+
* * parent_session_id
204+
*
205+
* * root_session_id
206+
*
186207
*
187208
*/
188209
ddog_MaybeError ddog_telemetry_builder_with_str_named_property(struct ddog_TelemetryWorkerBuilder *telemetry_builder,

ext/configuration.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ enum ddtrace_sidecar_connection_mode {
204204
CONFIG(INT, DD_TRACE_AGENT_FLUSH_INTERVAL, DD_CFG_EXPSTR(DD_TRACE_AGENT_FLUSH_INTERVAL_VAL), \
205205
.ini_change = zai_config_system_ini_change) \
206206
CONFIG(INT, DD_TELEMETRY_HEARTBEAT_INTERVAL, "60", .ini_change = zai_config_system_ini_change) \
207+
CONFIG(INT, DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL, "86400", \
208+
.ini_change = zai_config_system_ini_change) \
207209
CONFIG(INT, DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS, "0") \
208210
CONFIG(INT, DD_TRACE_SHUTDOWN_TIMEOUT, "5000", .ini_change = zai_config_system_ini_change) \
209211
CONFIG(BOOL, DD_TRACE_STARTUP_LOGS, "true") \

ext/sidecar.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ static void dd_sidecar_post_connect(ddog_SidecarTransport **transport, bool is_f
113113
(int)(get_global_DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS() * 1000),
114114
// for historical reasons in seconds
115115
get_global_DD_TELEMETRY_HEARTBEAT_INTERVAL() * 1000,
116+
// extended heartbeat interval, also in seconds
117+
(uint64_t)get_global_DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL() * 1000,
116118
get_global_DD_TRACE_BUFFER_SIZE(),
117119
get_global_DD_TRACE_AGENT_STACK_BACKLOG() * get_global_DD_TRACE_AGENT_MAX_PAYLOAD_SIZE(),
118120
get_global_DD_TRACE_DEBUG() ? DDOG_CHARSLICE_C("debug") : dd_zend_string_to_CharSlice(get_global_DD_TRACE_LOG_LEVEL()),

libdatadog

Submodule libdatadog updated 1010 files

metadata/supported-configurations.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,13 @@
644644
"default": ""
645645
}
646646
],
647+
"DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL": [
648+
{
649+
"implementation": "A",
650+
"type": "int",
651+
"default": "86400"
652+
}
653+
],
647654
"DD_TELEMETRY_HEARTBEAT_INTERVAL": [
648655
{
649656
"implementation": "C",

0 commit comments

Comments
 (0)