Skip to content

Commit b4cbab0

Browse files
committed
feat(tracer): add configuration for connection mode
Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
1 parent 9f547c2 commit b4cbab0

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

ext/configuration.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,21 @@ static bool dd_parse_sampling_rules_format(zai_str value, zval *decoded_value, b
9696
return true;
9797
}
9898

99+
static bool dd_parse_sidecar_connection_mode(zai_str value, zval *decoded_value, bool persistent) {
100+
UNUSED(persistent);
101+
if (zai_str_eq_ci_cstr(value, "auto")) {
102+
ZVAL_LONG(decoded_value, DD_TRACE_SIDECAR_CONNECTION_MODE_AUTO);
103+
} else if (zai_str_eq_ci_cstr(value, "subprocess")) {
104+
ZVAL_LONG(decoded_value, DD_TRACE_SIDECAR_CONNECTION_MODE_SUBPROCESS);
105+
} else if (zai_str_eq_ci_cstr(value, "thread")) {
106+
ZVAL_LONG(decoded_value, DD_TRACE_SIDECAR_CONNECTION_MODE_THREAD);
107+
} else {
108+
return false;
109+
}
110+
111+
return true;
112+
}
113+
99114
static bool dd_parse_tags(zai_str value, zval *decoded_value, bool persistent) {
100115
ZVAL_ARR(decoded_value, pemalloc(sizeof(HashTable), persistent));
101116
zend_hash_init(Z_ARR_P(decoded_value), 8, NULL, persistent ? ZVAL_INTERNAL_PTR_DTOR : ZVAL_PTR_DTOR, persistent);

ext/configuration.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ enum ddtrace_sampling_rules_format {
3030
DD_TRACE_SAMPLING_RULES_FORMAT_GLOB
3131
};
3232

33+
enum ddtrace_sidecar_connection_mode {
34+
DD_TRACE_SIDECAR_CONNECTION_MODE_AUTO = 0, // Default: try subprocess, fallback to thread
35+
DD_TRACE_SIDECAR_CONNECTION_MODE_SUBPROCESS = 1, // Force subprocess only
36+
DD_TRACE_SIDECAR_CONNECTION_MODE_THREAD = 2, // Force thread only
37+
};
38+
3339
/* From the curl docs on CONNECT_TIMEOUT_MS:
3440
* If libcurl is built to use the standard system name resolver, that
3541
* portion of the transfer will still use full-second resolution for
@@ -225,6 +231,7 @@ enum ddtrace_sampling_rules_format {
225231
CONFIG(STRING, DD_TRACE_AGENT_TEST_SESSION_TOKEN, "", .ini_change = ddtrace_alter_test_session_token) \
226232
CONFIG(BOOL, DD_TRACE_PROPAGATE_USER_ID_DEFAULT, "false") \
227233
CONFIG(CUSTOM(INT), DD_DBM_PROPAGATION_MODE, "disabled", .parser = dd_parse_dbm_mode) \
234+
CONFIG(CUSTOM(INT), DD_TRACE_SIDECAR_CONNECTION_MODE, "auto", .parser = dd_parse_sidecar_connection_mode) \
228235
CONFIG(SET, DD_TRACE_WORDPRESS_ADDITIONAL_ACTIONS, "") \
229236
CONFIG(BOOL, DD_TRACE_WORDPRESS_CALLBACKS, "true") \
230237
CONFIG(BOOL, DD_INTEGRATION_METRICS_ENABLED, "true", \

ext/ddtrace_arginfo.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,9 @@ static void register_ddtrace_symbols(int module_number)
541541
REGISTER_LONG_CONSTANT("DDTrace\\DBM_PROPAGATION_DISABLED", DD_TRACE_DBM_PROPAGATION_DISABLED, CONST_PERSISTENT);
542542
REGISTER_LONG_CONSTANT("DDTrace\\DBM_PROPAGATION_SERVICE", DD_TRACE_DBM_PROPAGATION_SERVICE, CONST_PERSISTENT);
543543
REGISTER_LONG_CONSTANT("DDTrace\\DBM_PROPAGATION_FULL", DD_TRACE_DBM_PROPAGATION_FULL, CONST_PERSISTENT);
544+
REGISTER_LONG_CONSTANT("DDTrace\\SIDECAR_CONNECTION_MODE_AUTO", DD_TRACE_SIDECAR_CONNECTION_MODE_AUTO, CONST_PERSISTENT);
545+
REGISTER_LONG_CONSTANT("DDTrace\\SIDECAR_CONNECTION_MODE_SUBPROCESS", DD_TRACE_SIDECAR_CONNECTION_MODE_SUBPROCESS, CONST_PERSISTENT);
546+
REGISTER_LONG_CONSTANT("DDTrace\\SIDECAR_CONNECTION_MODE_THREAD", DD_TRACE_SIDECAR_CONNECTION_MODE_THREAD, CONST_PERSISTENT);
544547
REGISTER_LONG_CONSTANT("DDTrace\\Internal\\SPAN_FLAG_OPENTELEMETRY", DDTRACE_SPAN_FLAG_OPENTELEMETRY, CONST_PERSISTENT);
545548
REGISTER_LONG_CONSTANT("DDTrace\\Internal\\SPAN_FLAG_OPENTRACING", DDTRACE_SPAN_FLAG_OPENTRACING, CONST_PERSISTENT);
546549
REGISTER_STRING_CONSTANT("DD_TRACE_VERSION", PHP_DDTRACE_VERSION, CONST_PERSISTENT);

0 commit comments

Comments
 (0)