Skip to content

Commit 6c60335

Browse files
committed
Flush telemetry as well on anticipated sidecar shutdown
1 parent 6b55c3e commit 6c60335

7 files changed

Lines changed: 41 additions & 8 deletions

File tree

Cargo.lock

Lines changed: 4 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: 8 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;
@@ -1171,6 +1174,11 @@ typedef struct ddog_NativeFile {
11711174
struct ddog_PlatformHandle_File *handle;
11721175
} ddog_NativeFile;
11731176

1177+
typedef struct ddog_SidecarFlushOptions {
1178+
bool traces_and_stats;
1179+
bool telemetry;
1180+
} ddog_SidecarFlushOptions;
1181+
11741182
typedef struct ddog_TracerHeaderTags {
11751183
ddog_CharSlice lang;
11761184
ddog_CharSlice lang_version;

components-rs/sidecar.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ ddog_MaybeError ddog_sidecar_clear_inherited_listener(void);
104104

105105
ddog_MaybeError ddog_sidecar_ping(struct ddog_SidecarTransport **transport);
106106

107-
ddog_MaybeError ddog_sidecar_flush_traces(struct ddog_SidecarTransport **transport);
107+
ddog_MaybeError ddog_sidecar_flush(struct ddog_SidecarTransport **transport,
108+
struct ddog_SidecarFlushOptions options);
108109

109110
struct ddog_InstanceId *ddog_sidecar_instanceId_build(ddog_CharSlice session_id,
110111
ddog_CharSlice runtime_id);
@@ -200,6 +201,7 @@ ddog_MaybeError ddog_sidecar_session_set_config(struct ddog_SidecarTransport **t
200201
uint32_t flush_interval_milliseconds,
201202
uint32_t remote_config_poll_interval_millis,
202203
uint32_t telemetry_heartbeat_interval_millis,
204+
uint64_t telemetry_extended_heartbeat_interval_millis,
203205
uintptr_t force_flush_size,
204206
uintptr_t force_drop_size,
205207
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/ddtrace.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,7 +1598,7 @@ static PHP_MSHUTDOWN_FUNCTION(ddtrace) {
15981598
} else /* ! part of the if outside the ifdef */
15991599
#endif
16001600
if (get_global_DD_TRACE_FORCE_FLUSH_ON_SHUTDOWN() && DDTRACE_G(sidecar)) {
1601-
ddog_sidecar_flush_traces(&DDTRACE_G(sidecar));
1601+
ddog_sidecar_flush(&DDTRACE_G(sidecar), (ddog_SidecarFlushOptions){.traces_and_stats = true, .telemetry = true});
16021602
}
16031603

16041604
ddtrace_log_mshutdown();
@@ -3083,7 +3083,7 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30833083
} else
30843084
#endif
30853085
if (DDTRACE_G(sidecar)) {
3086-
ddtrace_ffi_try("Failed synchronously flushing traces", ddog_sidecar_flush_traces(&DDTRACE_G(sidecar)));
3086+
ddtrace_ffi_try("Failed synchronously flushing traces", ddog_sidecar_flush(&DDTRACE_G(sidecar), (ddog_SidecarFlushOptions){.traces_and_stats = true}));
30873087
}
30883088
RETVAL_TRUE;
30893089
#ifndef _WIN32
@@ -3218,7 +3218,7 @@ PHP_FUNCTION(dd_trace_synchronous_flush) {
32183218
} else
32193219
#endif
32203220
if (DDTRACE_G(sidecar)) {
3221-
ddtrace_ffi_try("Failed synchronously flushing traces", ddog_sidecar_flush_traces(&DDTRACE_G(sidecar)));
3221+
ddtrace_ffi_try("Failed synchronously flushing traces", ddog_sidecar_flush(&DDTRACE_G(sidecar), (ddog_SidecarFlushOptions){.traces_and_stats = true}));
32223222
}
32233223
RETURN_NULL();
32243224
}

ext/signals.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ static int dd_call_prev_handler(bool flush) {
363363
}
364364

365365
if (flush) {
366-
ddog_sidecar_flush_traces(&ddtrace_sidecar_for_signal);
366+
ddog_sidecar_flush(&ddtrace_sidecar_for_signal, (ddog_SidecarFlushOptions){.traces_and_stats = true});
367367
}
368368

369369
if (prev_handler == SIG_DFL) {

libdatadog

Submodule libdatadog updated 1026 files

0 commit comments

Comments
 (0)