Skip to content

Commit cdf7e03

Browse files
committed
fix(sidecar): wrap new FFI calls in ddtrace_ffi_try, refresh after fork
Addresses review feedback on PR: - Wrap `ddog_sidecar_session_set_default_service_name` calls in `ddtrace_ffi_try` so transport errors surface in the trace log instead of being silently dropped. - Use `DDOG_CHARSLICE_C("")` instead of hand-rolled CharSlice struct literal for the user-defined case (matches the rest of sidecar.c). - Call `ddtrace_sidecar_update_process_tags()` at the end of `ddtrace_sidecar_handle_fork` so the child's fresh sidecar session re-learns the svc.* source after fork; without this, child telemetry/RC/stats payloads would drop the svc.* tag entirely until the next external trigger. Submodule bump picks up the companion stats-payload fix in DataDog/libdatadog#2053.
1 parent 602e778 commit cdf7e03

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

ext/sidecar.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,19 @@ void ddtrace_sidecar_update_process_tags(void) {
153153

154154
zend_string *dd_service = get_DD_SERVICE();
155155
if (dd_service && ZSTR_LEN(dd_service) > 0) {
156-
ddog_sidecar_session_set_default_service_name(&DDTRACE_G(sidecar),
157-
(ddog_CharSlice){ .ptr = "", .len = 0 });
156+
ddtrace_ffi_try("Failed updating sidecar default service name",
157+
ddog_sidecar_session_set_default_service_name(&DDTRACE_G(sidecar),
158+
DDOG_CHARSLICE_C("")));
158159
} else {
159160
zend_string *default_svc = ddtrace_default_service_name();
160161
if (default_svc) {
161162
const char *normalized = ddog_normalize_process_tag_value((ddog_CharSlice){
162163
.ptr = ZSTR_VAL(default_svc), .len = ZSTR_LEN(default_svc)
163164
});
164165
if (normalized) {
165-
ddog_sidecar_session_set_default_service_name(&DDTRACE_G(sidecar),
166-
(ddog_CharSlice){ .ptr = normalized, .len = strlen(normalized) });
166+
ddtrace_ffi_try("Failed updating sidecar default service name",
167+
ddog_sidecar_session_set_default_service_name(&DDTRACE_G(sidecar),
168+
(ddog_CharSlice){ .ptr = normalized, .len = strlen(normalized) }));
167169
ddog_free_normalized_tag_value(normalized);
168170
}
169171
zend_string_release(default_svc);
@@ -518,6 +520,10 @@ void ddtrace_sidecar_handle_fork(void) {
518520

519521
if (DDTRACE_G(sidecar)) {
520522
ddtrace_sidecar_for_signal = DDTRACE_G(sidecar);
523+
// The fresh post-fork sidecar session has no record of the svc.*
524+
// source. Re-push it so telemetry/RC payloads from the child still
525+
// carry svc.user/svc.auto.
526+
ddtrace_sidecar_update_process_tags();
521527
}
522528
#endif
523529
}

0 commit comments

Comments
 (0)