Skip to content

Commit b9986f9

Browse files
dubloomPROFeNoM
andauthored
Adds process_tags to live debugger payloads (#3580)
* init process tags for APM Co-Authored-By: PROFeNoM <[email protected]> * feat(process_tags): add process_tags to tracing payloads * small auto review and fix test * bwoebi review * fix test * Adds process_tags to live debugger payloads * temporary libdatadog bump * auto review * bump libdatadog * fix build * update makefile && make cbindgen * fixing test * fixing test * fix appsec tests --------- Co-authored-by: PROFeNoM <[email protected]>
1 parent a6f96b3 commit b9986f9

21 files changed

Lines changed: 177 additions & 59 deletions

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ generate_cbindgen: cbindgen_binary # Regenerate components-rs/ddtrace.h componen
446446
mkdir -pv "$(BUILD_DIR)"; \
447447
export CARGO_TARGET_DIR="$(BUILD_DIR)/target"; \
448448
fi; \
449-
cargo run -p tools -- $(PROJECT_ROOT)/components-rs/common.h $(PROJECT_ROOT)/components-rs/ddtrace.h $(PROJECT_ROOT)/components-rs/live-debugger.h $(PROJECT_ROOT)/components-rs/telemetry.h $(PROJECT_ROOT)/components-rs/sidecar.h $(PROJECT_ROOT)/components-rs/crashtracker.h $(PROJECT_ROOT)/components-rs/library-config.h \
449+
cargo run -p tools --bin dedup_headers -- $(PROJECT_ROOT)/components-rs/common.h $(PROJECT_ROOT)/components-rs/ddtrace.h $(PROJECT_ROOT)/components-rs/live-debugger.h $(PROJECT_ROOT)/components-rs/telemetry.h $(PROJECT_ROOT)/components-rs/sidecar.h $(PROJECT_ROOT)/components-rs/crashtracker.h $(PROJECT_ROOT)/components-rs/library-config.h \
450450
)
451451

452452
cbindgen_binary:

appsec/tests/integration/src/main/groovy/com/datadog/appsec/php/TelemetryHelpers.groovy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ class TelemetryHelpers {
7373
static names = ['logs']
7474
List<Log> logs
7575

76+
Logs(Map m) {
77+
this(m.logs as List)
78+
}
79+
7680
Logs(List m) {
7781
logs = m.collect { new Log(it as Map) }
7882
}

components-rs/common.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,6 +1472,10 @@ typedef struct ddog_crasht_OsInfo {
14721472

14731473
typedef struct ddog_crasht_ProcInfo {
14741474
uint32_t pid;
1475+
/**
1476+
* Optional crashing thread id; 0 means unset.
1477+
*/
1478+
uint32_t tid;
14751479
} ddog_crasht_ProcInfo;
14761480

14771481
typedef struct ddog_crasht_SigInfo {

components-rs/crashtracker.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,16 @@ DDOG_CHECK_RETURN
646646
struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_message(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
647647
ddog_CharSlice message);
648648

649+
/**
650+
* # Safety
651+
* The `builder` can be null, but if non-null it must point to a Builder made by this module,
652+
* which has not previously been dropped.
653+
* The CharSlice must be valid.
654+
*/
655+
DDOG_CHECK_RETURN
656+
struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_thread_name(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
657+
ddog_CharSlice thread_name);
658+
649659
/**
650660
* # Safety
651661
* The `builder` can be null, but if non-null it must point to a Builder made by this module,

components-rs/live-debugger.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ struct ddog_DebuggerPayload *ddog_create_log_probe_snapshot(const struct ddog_Pr
5858
const ddog_CharSlice *message,
5959
ddog_CharSlice service,
6060
ddog_CharSlice language,
61-
uint64_t timestamp);
61+
uint64_t timestamp,
62+
ddog_CharSlice process_tags);
6263

6364
void ddog_update_payload_message(struct ddog_DebuggerPayload *payload, ddog_CharSlice message);
6465

components-rs/sidecar.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,12 @@ ddog_MaybeError ddog_sidecar_enqueue_telemetry_point(ddog_CharSlice session_id_f
241241
* Pointers must be valid, strings must be null-terminated if not null.
242242
*/
243243
ddog_MaybeError ddog_sidecar_enqueue_telemetry_metric(ddog_CharSlice session_id_ffi,
244-
ddog_CharSlice runtime_id_ffi,
245-
ddog_CharSlice service_name_ffi,
246-
ddog_CharSlice env_name_ffi,
247-
ddog_CharSlice metric_name_ffi,
248-
enum ddog_MetricType metric_type,
249-
enum ddog_MetricNamespace metric_namespace);
244+
ddog_CharSlice runtime_id_ffi,
245+
ddog_CharSlice service_name_ffi,
246+
ddog_CharSlice env_name_ffi,
247+
ddog_CharSlice metric_name_ffi,
248+
enum ddog_MetricType metric_type,
249+
enum ddog_MetricNamespace metric_namespace);
250250

251251
/**
252252
* Sends a trace to the sidecar via shared memory.

ext/live_debugger.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "zend_hrtime.h"
1414
#include "components-rs/common.h"
1515
#include "zend_generators.h"
16+
#include "process_tags.h"
1617

1718
ZEND_EXTERN_MODULE_GLOBALS(ddtrace);
1819

@@ -391,7 +392,13 @@ static void dd_log_probe_ensure_payload(dd_log_probe_dyn *dyn, dd_log_probe_def
391392
ddog_update_payload_message(dyn->payload, *msg);
392393
} else {
393394
dyn->service = ddtrace_active_service_name();
394-
dyn->payload = ddog_create_log_probe_snapshot(&def->parent.probe, msg, dd_zend_string_to_CharSlice(dyn->service), DDOG_CHARSLICE_C("php"), ddtrace_nanoseconds_realtime() / 1000000);
395+
dyn->payload = ddog_create_log_probe_snapshot(
396+
&def->parent.probe,
397+
msg,
398+
dd_zend_string_to_CharSlice(dyn->service),
399+
DDOG_CHARSLICE_C("php"),
400+
ddtrace_nanoseconds_realtime() / 1000000,
401+
dd_zend_string_to_CharSlice(ddtrace_process_tags_get_serialized()));
395402
}
396403
}
397404

ext/process_tags.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ static void serialize_process_tags(void) {
193193
}
194194

195195
zend_string *ddtrace_process_tags_get_serialized(void) {
196-
return (ddtrace_process_tags_enabled() && process_tags.serialized) ? process_tags.serialized : NULL;
196+
return (ddtrace_process_tags_enabled() && process_tags.serialized) ? process_tags.serialized : ZSTR_EMPTY_ALLOC();
197197
}
198198

199199
bool ddtrace_process_tags_enabled(void){

ext/serializer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1613,7 +1613,7 @@ ddog_SpanBytes *ddtrace_serialize_span_to_rust_span(ddtrace_span_data *span, ddo
16131613

16141614
if (is_first_span) {
16151615
zend_string *process_tags = ddtrace_process_tags_get_serialized();
1616-
if (process_tags) {
1616+
if (ZSTR_LEN(process_tags)) {
16171617
ddog_add_str_span_meta_zstr(rust_span, "_dd.process_tags", process_tags);
16181618
}
16191619
}

libdatadog

Submodule libdatadog updated 107 files

0 commit comments

Comments
 (0)