Skip to content

Commit c5f2dcb

Browse files
pierotiboubwoebibantonssoniamluc
authored
Enable sidecar by default on PHP 8.3 (#2680)
* Enable sidecar by default, only when telemetry is enabled * Manually set sidecar config to false Signed-off-by: Bob Weinand <[email protected]> * minor comments in the tests * add a test to make sure sidecar is enabled by default in 8.3 * Delay bgs initialization until sidecar sender status is finalized Signed-off-by: Bob Weinand <[email protected]> * Fix crash Signed-off-by: Bob Weinand <[email protected]> * Add telemetry for telemetry disabled Signed-off-by: Bob Weinand <[email protected]> * Fix mem leak Signed-off-by: Bob Weinand <[email protected]> * Hack to massage sidecar v0.7 into what is expected by tests Signed-off-by: Bob Weinand <[email protected]> * Fix telemetry path Signed-off-by: Bob Weinand <[email protected]> * More test stability Signed-off-by: Bob Weinand <[email protected]> * Fix header name * Update libdatadog * Test fixes Signed-off-by: Bob Weinand <[email protected]> * In the agent sampling test, telemetry conflicts with sidecar Manually set sidecar sender config. Signed-off-by: Bob Weinand <[email protected]> * Avoid parseMultipleRequestsFromDumpedData with sidecar * Skip valgrind test Signed-off-by: Bob Weinand <[email protected]> * Turn sidecar sender off in valgrind tests because of false positives Signed-off-by: Bob Weinand <[email protected]> --------- Signed-off-by: Bob Weinand <[email protected]> Co-authored-by: Bob Weinand <[email protected]> Co-authored-by: Björn Antonsson <[email protected]> Co-authored-by: Luc Vieillescazes <[email protected]>
1 parent c795fcd commit c5f2dcb

36 files changed

Lines changed: 534 additions & 179 deletions

.circleci/continue_config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ aliases:
7474
DD_REQUEST_DUMPER_FILE: dump.json
7575

7676
- &IMAGE_DOCKER_DD_TEST_AGENT
77-
image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.11.0
77+
image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:latest
7878
name: test-agent
7979
environment:
8080
LOG_LEVEL: DEBUG
@@ -435,7 +435,7 @@ commands:
435435
-e SNAPSHOT_DIR=/snapshots \
436436
-p "127.0.0.1:9126:9126" \
437437
-v $(pwd)/tests/snapshots:/snapshots \
438-
--name test-agent ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.11.0
438+
--name test-agent ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:latest
439439
retry_docker run --detach --rm --net net \
440440
--name httpbin_integration kong/httpbin
441441
retry_docker run --detach --rm --net net \

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ test_extension_ci: $(SO_FILE) $(TEST_FILES) $(TEST_STUB_FILES)
161161
\
162162
export TEST_PHP_JUNIT=$(JUNIT_RESULTS_DIR)/valgrind-extension-test.xml; \
163163
export TEST_PHP_OUTPUT=$(JUNIT_RESULTS_DIR)/valgrind-run-tests.out; \
164+
export DD_TRACE_SIDECAR_TRACE_SENDER=0; \
164165
$(RUN_TESTS_CMD) -d extension=$(SO_FILE) -m -s $$TEST_PHP_OUTPUT $(BUILD_DIR)/$(TESTS) && ! grep -e 'LEAKED TEST SUMMARY' $$TEST_PHP_OUTPUT; \
165166
)
166167

@@ -969,7 +970,7 @@ TEST_WEB_83 := \
969970
test_web_custom \
970971
test_web_zend_1_21
971972

972-
FILTER := .
973+
FILTER ?= .
973974
MAX_RETRIES := 3
974975

975976
# Note: The "composer show" command below outputs a csv with pairs of dependency;version such as "phpunit/phpunit;9.6.17"
@@ -984,7 +985,7 @@ define run_composer_with_retry
984985
endef
985986

986987
define run_tests_without_coverage
987-
$(TEST_EXTRA_ENV) $(ENV_OVERRIDE) php $(TEST_EXTRA_INI) -d datadog.instrumentation_telemetry_enabled=0 $(TRACER_SOURCES_INI) $(PHPUNIT) $(1) --filter=$(FILTER)
988+
$(TEST_EXTRA_ENV) $(ENV_OVERRIDE) php $(TEST_EXTRA_INI) -d datadog.instrumentation_telemetry_enabled=0 -d datadog.trace.sidecar_trace_sender=$(shell test $(PHP_MAJOR_MINOR) -ge 83 && echo 1 || echo 0) $(TRACER_SOURCES_INI) $(PHPUNIT) $(1) --filter=$(FILTER)
988989
endef
989990

990991
define run_tests_with_coverage

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ services:
207207
- .:/app
208208

209209
test-agent:
210-
image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.11.0
210+
image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:latest
211211
ports:
212212
- "127.0.0.1:9126:8126"
213213
volumes:

ext/auto_flush.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ ZEND_RESULT_CODE ddtrace_flush_tracer(bool force_on_startup, bool collect_cycles
6969
size_t size_hint = written;
7070
zend_long n_requests = get_global_DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS();
7171
if (n_requests) {
72-
size_hint = MAX(get_global_DD_TRACE_BUFFER_SIZE() / n_requests, size_hint);
72+
size_hint = MAX(get_global_DD_TRACE_BUFFER_SIZE() / n_requests + 1, size_hint);
7373
}
7474
ddog_MaybeError send_error = ddog_sidecar_send_trace_v04_shm(&ddtrace_sidecar, ddtrace_sidecar_instance_id, shm, size_hint, &tags);
7575
do {

ext/coms.c

Lines changed: 88 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,14 @@ static void _dd_at_exit_hook() {
151151
}
152152
}
153153

154-
bool ddtrace_coms_minit(size_t initial_stack_size, size_t max_stack_size, size_t max_backlog_size) {
154+
bool ddtrace_coms_minit(size_t initial_stack_size, size_t max_stack_size, size_t max_backlog_size, char *bgs_fallback_telemetry_service) {
155155
ddtrace_coms_globals.initial_stack_size = initial_stack_size;
156156
ddtrace_coms_globals.max_payload_size = max_stack_size;
157157
ddtrace_coms_globals.max_backlog_size = max_backlog_size;
158+
ddtrace_coms_globals.bgs_fallback_telemetry = bgs_fallback_telemetry_service != NULL;
159+
if (bgs_fallback_telemetry_service) {
160+
strncpy(ddtrace_coms_globals.initial_service_name, bgs_fallback_telemetry_service, sizeof(ddtrace_coms_globals.initial_service_name) - 1);
161+
}
158162

159163
atomic_store(&ddtrace_coms_globals.stack_size, initial_stack_size);
160164

@@ -735,23 +739,31 @@ void ddtrace_curl_set_connect_timeout(CURL *curl) {
735739
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, timeout);
736740
}
737741

738-
void ddtrace_curl_set_hostname(CURL *curl) {
742+
static void ddtrace_curl_set_hostname_generic(CURL *curl, const char *path) {
739743
char *url = ddtrace_agent_url();
740744
if (url && url[0]) {
741745
char *http_url = url;
742746
if (strlen(url) > 7 && strncmp(url, "unix://", 7) == 0) {
743747
curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, url + 7);
744748
http_url = "http://localhost";
745749
}
746-
size_t agent_url_len = strlen(http_url) + sizeof(TRACE_PATH_STR);
750+
size_t agent_url_len = strlen(http_url) + strlen(path) + 1;
747751
char *agent_url = malloc(agent_url_len);
748-
sprintf(agent_url, "%s%s", http_url, TRACE_PATH_STR);
752+
sprintf(agent_url, "%s%s", http_url, path);
749753
curl_easy_setopt(curl, CURLOPT_URL, agent_url);
750754
free(agent_url);
751755
}
752756
free(url);
753757
}
754758

759+
void ddtrace_curl_set_hostname(CURL *curl) {
760+
ddtrace_curl_set_hostname_generic(curl, TRACE_PATH_STR);
761+
}
762+
763+
void ddtrace_curl_set_telemetry_url(CURL *curl) {
764+
ddtrace_curl_set_hostname_generic(curl, "/telemetry/proxy/api/v2/apmtelemetry");
765+
}
766+
755767
static struct timespec _dd_deadline_in_ms(uint32_t ms) {
756768
struct timespec deadline;
757769
struct timeval now;
@@ -992,6 +1004,77 @@ static void *_dd_writer_loop(void *_) {
9921004

9931005
bool running = true;
9941006
_dd_signal_writer_started(writer);
1007+
1008+
if (ddtrace_coms_globals.bgs_fallback_telemetry) {
1009+
ddtrace_coms_globals.bgs_fallback_telemetry = false;
1010+
uint8_t runtime_id[36];
1011+
ddtrace_format_runtime_id(&runtime_id);
1012+
char hostname[101];
1013+
hostname[100] = 0;
1014+
gethostname(hostname, 100);
1015+
char *payload;
1016+
asprintf(&payload, "{\n"
1017+
" \"api_version\": \"v2\",\n"
1018+
" \"request_type\": \"generate-metrics\",\n"
1019+
" \"seq_id\": 1,\n"
1020+
" \"runtime_id\": \"%.36s\",\n"
1021+
" \"tracer_time\": %ld,\n"
1022+
" \"payload\": {\n"
1023+
" \"namespace\": \"tracers\",\n"
1024+
" \"series\": [\n"
1025+
" {\n"
1026+
" \"metric\": \"exporter_fallback\",\n"
1027+
" \"tags\": [\n"
1028+
" \"reason:instrumentation_telemetry_disabled\"\n"
1029+
" ],\n"
1030+
" \"points\": [\n"
1031+
" [\n"
1032+
" %ld,\n"
1033+
" 1\n"
1034+
" ]\n"
1035+
" ],\n"
1036+
" \"type\": \"count\",\n"
1037+
" \"common\": true\n"
1038+
" }\n"
1039+
" ]\n"
1040+
" },\n"
1041+
" \"application\": {\n"
1042+
" \"service_name\": \"%s\",\n"
1043+
" \"tracer_version\": \"%s\",\n"
1044+
" \"language_name\": \"php\",\n"
1045+
" \"language_version\": \"%s\"\n"
1046+
" },\n"
1047+
" \"host\": {\n"
1048+
" \"hostname\": \"%s\"\n"
1049+
" }\n"
1050+
"}",
1051+
(char *)runtime_id,
1052+
time(NULL),
1053+
time(NULL),
1054+
ddtrace_coms_globals.initial_service_name,
1055+
PHP_DDTRACE_VERSION,
1056+
ZSTR_VAL(ddtrace_php_version),
1057+
hostname
1058+
);
1059+
1060+
writer->curl = curl_easy_init();
1061+
curl_easy_setopt(writer->curl, CURLOPT_WRITEFUNCTION, _dd_dummy_write_callback);
1062+
curl_easy_setopt(writer->curl, CURLOPT_NOSIGNAL, 1);
1063+
curl_easy_setopt(writer->curl, CURLOPT_POSTFIELDS, payload);
1064+
ddtrace_curl_set_timeout(writer->curl);
1065+
ddtrace_curl_set_connect_timeout(writer->curl);
1066+
struct curl_slist *headers = curl_slist_append(NULL, "Content-Type: application/json");
1067+
curl_easy_setopt(writer->curl, CURLOPT_HTTPHEADER, headers);
1068+
ddtrace_curl_set_telemetry_url(writer->curl);
1069+
curl_easy_perform(writer->curl);
1070+
1071+
free(payload);
1072+
CURL *curl = writer->curl;
1073+
writer->curl = NULL;
1074+
curl_easy_cleanup(curl);
1075+
curl_slist_free_all(headers);
1076+
}
1077+
9951078
do {
9961079
atomic_fetch_add(&writer->writer_cycle, 1);
9971080
uint32_t interval = atomic_load(&writer->flush_interval);
@@ -1156,7 +1239,7 @@ void ddtrace_coms_clean_background_sender_after_fork(void) {
11561239
_dd_unsafe_cleanup_dirty_stack_area();
11571240
_dd_coms_stack_shutdown();
11581241
global_writer = (struct _writer_loop_data_t){0};
1159-
ddtrace_coms_minit(ddtrace_coms_globals.initial_stack_size, ddtrace_coms_globals.max_payload_size, ddtrace_coms_globals.max_backlog_size);
1242+
ddtrace_coms_minit(ddtrace_coms_globals.initial_stack_size, ddtrace_coms_globals.max_payload_size, ddtrace_coms_globals.max_backlog_size, NULL);
11601243
}
11611244

11621245
bool ddtrace_coms_on_pid_change(void) {

ext/coms.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ typedef struct ddtrace_coms_state_t {
4141
* The maximum backlog size, from DD_TRACE_AGENT_MAX_BACKLOG_SIZE
4242
*/
4343
size_t max_backlog_size;
44+
45+
/* Whether to send fallback telemetry. */
46+
bool bgs_fallback_telemetry;
47+
char initial_service_name[100];
4448
} ddtrace_coms_state_t;
4549

4650
inline bool ddtrace_coms_is_stack_unused(ddtrace_coms_stack_t *stack) { return atomic_load(&stack->refcount) == 0; }
@@ -52,7 +56,7 @@ inline bool ddtrace_coms_is_stack_free(ddtrace_coms_stack_t *stack) {
5256
/* Is called by the PHP thread to buffer a payload in order to send it. It is non-blocking on the request to the agent.
5357
*/
5458
bool ddtrace_coms_buffer_data(uint32_t group_id, const char *data, size_t size);
55-
bool ddtrace_coms_minit(size_t initial_stack_size, size_t max_payload_size, size_t max_backlog_size);
59+
bool ddtrace_coms_minit(size_t initial_stack_size, size_t max_payload_size, size_t max_backlog_size, char *bgs_fallback_telemetry_service);
5660
void ddtrace_coms_mshutdown(void);
5761
void ddtrace_coms_curl_shutdown(void);
5862
void ddtrace_coms_rshutdown(void);

ext/configuration.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ enum ddtrace_sampling_rules_format {
5353
#define DD_INTEGRATION_ANALYTICS_ENABLED_DEFAULT false
5454
#define DD_INTEGRATION_ANALYTICS_SAMPLE_RATE_DEFAULT 1
5555

56+
#if PHP_VERSION_ID >= 80300 || defined(_WIN32)
57+
#define DD_SIDECAR_TRACE_SENDER_DEFAULT true
58+
#else
59+
#define DD_SIDECAR_TRACE_SENDER_DEFAULT false
60+
#endif
61+
5662
#if _BUILD_FROM_PECL_
5763
#define DD_DEFAULT_SOURCES_PATH "@php_dir@/datadog_trace/src/"
5864
#else
@@ -200,11 +206,11 @@ enum ddtrace_sampling_rules_format {
200206
DD_INTEGRATIONS
201207

202208
#ifndef _WIN32
203-
#define DD_CONFIGURATION \
204-
CONFIG(BOOL, DD_TRACE_SIDECAR_TRACE_SENDER, "false", .ini_change = zai_config_system_ini_change) \
205-
DD_CONFIGURATION_ALL
209+
# define DD_CONFIGURATION \
210+
CONFIG(BOOL, DD_TRACE_SIDECAR_TRACE_SENDER, DD_CFG_EXPSTR(DD_SIDECAR_TRACE_SENDER_DEFAULT), .ini_change = zai_config_system_ini_change) \
211+
DD_CONFIGURATION_ALL
206212
#else
207-
#define DD_CONFIGURATION DD_CONFIGURATION_ALL
213+
# define DD_CONFIGURATION DD_CONFIGURATION_ALL
208214
#endif
209215

210216
#define CALIAS CONFIG

ext/ddtrace.c

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,20 @@ static void dd_activate_once(void) {
398398
// must run before the first zai_hook_activate as ddtrace_telemetry_setup installs a global hook
399399
if (!ddtrace_disable) {
400400
#ifndef _WIN32
401+
// Only disable sidecar sender when explicitly disabled
402+
bool bgs_fallback = DD_SIDECAR_TRACE_SENDER_DEFAULT && get_global_DD_TRACE_SIDECAR_TRACE_SENDER() && zai_config_memoized_entries[DDTRACE_CONFIG_DD_TRACE_SIDECAR_TRACE_SENDER].name_index < 0 && !get_global_DD_INSTRUMENTATION_TELEMETRY_ENABLED();
403+
zend_string *bgs_service = NULL;
404+
if (bgs_fallback) {
405+
// We enabled sending traces through the sidecar by default
406+
// That said a few customers have explicitly disabled telemetry to disable the sidecar
407+
// So if telemetry is disabled, we will disable the sidecar and send a one shot telemetry call
408+
ddtrace_change_default_ini(DDTRACE_CONFIG_DD_TRACE_SIDECAR_TRACE_SENDER, (zai_str) ZAI_STR_FROM_CSTR("0"));
409+
if ((bgs_service = get_DD_SERVICE())) {
410+
zend_string_addref(bgs_service);
411+
} else {
412+
bgs_service = ddtrace_default_service_name();
413+
}
414+
}
401415
if (get_global_DD_INSTRUMENTATION_TELEMETRY_ENABLED() || get_global_DD_TRACE_SIDECAR_TRACE_SENDER())
402416
#endif
403417
{
@@ -406,6 +420,25 @@ static void dd_activate_once(void) {
406420
ddtrace_sidecar_setup();
407421
PG(modules_activated) = modules_activated;
408422
}
423+
#ifndef _WIN32
424+
if (!get_global_DD_TRACE_SIDECAR_TRACE_SENDER()) {
425+
if (get_global_DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS() == 0) {
426+
// Set the default to 10 so that BGS flushes faster. With sidecar it's not needed generally.
427+
ddtrace_change_default_ini(DDTRACE_CONFIG_DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS, (zai_str) ZAI_STR_FROM_CSTR("10"));
428+
}
429+
if (get_DD_TRACE_AGENT_FLUSH_INTERVAL() == DD_TRACE_AGENT_FLUSH_INTERVAL_VAL) {
430+
// Set the default to 5000 so that BGS does not flush too often. The sidecar can flush more often, but the BGS is per process. Keep it higher to avoid too much load on the agent.
431+
ddtrace_change_default_ini(DDTRACE_CONFIG_DD_TRACE_AGENT_FLUSH_INTERVAL, (zai_str) ZAI_STR_FROM_CSTR("5000"));
432+
}
433+
ddtrace_coms_minit(get_global_DD_TRACE_AGENT_STACK_INITIAL_SIZE(),
434+
get_global_DD_TRACE_AGENT_MAX_PAYLOAD_SIZE(),
435+
get_global_DD_TRACE_AGENT_STACK_BACKLOG(),
436+
bgs_fallback ? ZSTR_VAL(bgs_service) : NULL);
437+
if (bgs_fallback) {
438+
zend_string_release(bgs_service);
439+
}
440+
}
441+
#endif
409442
}
410443
}
411444

@@ -1117,14 +1150,6 @@ static PHP_MINIT_FUNCTION(ddtrace) {
11171150

11181151
ddtrace_engine_hooks_minit();
11191152

1120-
#ifndef _WIN32
1121-
if (!get_global_DD_TRACE_SIDECAR_TRACE_SENDER()) {
1122-
ddtrace_coms_minit(get_global_DD_TRACE_AGENT_STACK_INITIAL_SIZE(),
1123-
get_global_DD_TRACE_AGENT_MAX_PAYLOAD_SIZE(),
1124-
get_global_DD_TRACE_AGENT_STACK_BACKLOG());
1125-
}
1126-
#endif
1127-
11281153
ddtrace_integrations_minit();
11291154
dd_ip_extraction_startup();
11301155
ddtrace_serializer_startup();
@@ -1202,14 +1227,6 @@ static void dd_rinit_once(void) {
12021227
#ifndef _WIN32
12031228
ddtrace_signals_first_rinit();
12041229
if (!get_global_DD_TRACE_SIDECAR_TRACE_SENDER()) {
1205-
if (get_global_DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS() == 0) {
1206-
// Set the default to 10 so that BGS flushes faster. With sidecar it's not needed generally.
1207-
ddtrace_change_default_ini(DDTRACE_CONFIG_DD_TRACE_AGENT_FLUSH_AFTER_N_REQUESTS, (zai_str) ZAI_STR_FROM_CSTR("10"));
1208-
}
1209-
if (get_DD_TRACE_AGENT_FLUSH_INTERVAL() == DD_TRACE_AGENT_FLUSH_INTERVAL_VAL) {
1210-
// Set the default to 5000 so that BGS does not flush too often. The sidecar can flush more often, but the BGS is per process. Keep it higher to avoid too much load on the agent.
1211-
ddtrace_change_default_ini(DDTRACE_CONFIG_DD_TRACE_AGENT_FLUSH_INTERVAL, (zai_str) ZAI_STR_FROM_CSTR("5000"));
1212-
}
12131230
ddtrace_coms_init_and_start_writer();
12141231
}
12151232
#endif

ext/serializer.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -796,6 +796,19 @@ void ddtrace_inherit_span_properties(ddtrace_span_data *span, ddtrace_span_data
796796
ZVAL_COPY(prop_env, env);
797797
}
798798

799+
zend_string *ddtrace_default_service_name(void) {
800+
if (strcmp(sapi_module.name, "cli") != 0) {
801+
return zend_string_init(ZEND_STRL("web.request"), 0);
802+
}
803+
804+
const char *script_name;
805+
if (SG(request_info).argc > 0 && (script_name = SG(request_info).argv[0]) && script_name[0] != '\0') {
806+
return php_basename(script_name, strlen(script_name), NULL, 0);
807+
} else {
808+
return zend_string_init(ZEND_STRL("cli.command"), 0);
809+
}
810+
}
811+
799812
void ddtrace_set_root_span_properties(ddtrace_root_span_data *span) {
800813
ddtrace_update_root_id_properties(span);
801814

@@ -866,18 +879,12 @@ void ddtrace_set_root_span_properties(ddtrace_root_span_data *span) {
866879
if (strcmp(sapi_module.name, "cli") == 0) {
867880
zval_ptr_dtor(prop_type);
868881
ZVAL_STR(prop_type, zend_string_init(ZEND_STRL("cli"), 0));
869-
const char *script_name;
870-
zval_ptr_dtor(prop_name);
871-
ZVAL_STR(prop_name,
872-
(SG(request_info).argc > 0 && (script_name = SG(request_info).argv[0]) && script_name[0] != '\0')
873-
? php_basename(script_name, strlen(script_name), NULL, 0)
874-
: zend_string_init(ZEND_STRL("cli.command"), 0));
875882
} else {
876883
zval_ptr_dtor(prop_type);
877884
ZVAL_STR(prop_type, zend_string_init(ZEND_STRL("web"), 0));
878-
zval_ptr_dtor(prop_name);
879-
ZVAL_STR(prop_name, zend_string_init(ZEND_STRL("web.request"), 0));
880885
}
886+
zval_ptr_dtor(prop_name);
887+
ZVAL_STR(prop_name, ddtrace_default_service_name());
881888
zval_ptr_dtor(prop_service);
882889
ZVAL_STR_COPY(prop_service, ZSTR_LEN(get_DD_SERVICE()) ? get_DD_SERVICE() : Z_STR_P(prop_name));
883890

ext/serializer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ void ddtrace_set_global_span_properties(ddtrace_span_data *span);
1313
void ddtrace_set_root_span_properties(ddtrace_root_span_data *span);
1414
void ddtrace_update_root_id_properties(ddtrace_root_span_data *span);
1515
void ddtrace_inherit_span_properties(ddtrace_span_data *span, ddtrace_span_data *parent);
16+
zend_string *ddtrace_default_service_name(void);
1617

1718
void ddtrace_initialize_span_sampling_limiter(void);
1819
void ddtrace_shutdown_span_sampling_limiter(void);

0 commit comments

Comments
 (0)