@@ -409,21 +409,21 @@ static inline void dd_alter_prop(size_t prop_offset, zval *old_value, zval *new_
409409bool ddtrace_alter_dd_service (zval * old_value , zval * new_value , zend_string * new_str ) {
410410 dd_alter_prop (XtOffsetOf (ddtrace_span_properties , property_service ), old_value , new_value , new_str );
411411 if (DDTRACE_G (request_initialized )) {
412- ddtrace_sidecar_submit_root_span_data_direct (& ddtrace_sidecar , NULL , new_str , get_DD_ENV (), get_DD_VERSION ());
412+ ddtrace_sidecar_submit_root_span_data_direct (& DDTRACE_G ( sidecar ) , NULL , new_str , get_DD_ENV (), get_DD_VERSION ());
413413 }
414414 return true;
415415}
416416bool ddtrace_alter_dd_env (zval * old_value , zval * new_value , zend_string * new_str ) {
417417 dd_alter_prop (XtOffsetOf (ddtrace_span_properties , property_env ), old_value , new_value , new_str );
418418 if (DDTRACE_G (request_initialized )) {
419- ddtrace_sidecar_submit_root_span_data_direct (& ddtrace_sidecar , NULL , get_DD_SERVICE (), new_str , get_DD_VERSION ());
419+ ddtrace_sidecar_submit_root_span_data_direct (& DDTRACE_G ( sidecar ) , NULL , get_DD_SERVICE (), new_str , get_DD_VERSION ());
420420 }
421421 return true;
422422}
423423bool ddtrace_alter_dd_version (zval * old_value , zval * new_value , zend_string * new_str ) {
424424 dd_alter_prop (XtOffsetOf (ddtrace_span_properties , property_version ), old_value , new_value , new_str );
425425 if (DDTRACE_G (request_initialized )) {
426- ddtrace_sidecar_submit_root_span_data_direct (& ddtrace_sidecar , NULL , get_DD_SERVICE (), get_DD_ENV (), new_str );
426+ ddtrace_sidecar_submit_root_span_data_direct (& DDTRACE_G ( sidecar ) , NULL , get_DD_SERVICE (), get_DD_ENV (), new_str );
427427 }
428428 return true;
429429}
@@ -697,6 +697,9 @@ static PHP_GSHUTDOWN_FUNCTION(ddtrace) {
697697
698698 zend_hash_destroy (& ddtrace_globals -> git_metadata );
699699
700+ // Drop the per-thread sidecar transport (thread-lifetime, one per thread).
701+ ddtrace_sidecar_gshutdown ();
702+
700703 tsrm_mutex_free (ddtrace_globals -> sidecar_universal_service_tags_mutex );
701704
702705#ifdef CXA_THREAD_ATEXIT_WRAPPER
@@ -1594,8 +1597,8 @@ static PHP_MSHUTDOWN_FUNCTION(ddtrace) {
15941597 ddtrace_coms_mshutdown_proxy_env ();
15951598 } else /* ! part of the if outside the ifdef */
15961599#endif
1597- if (get_global_DD_TRACE_FORCE_FLUSH_ON_SHUTDOWN () && ddtrace_sidecar ) {
1598- ddog_sidecar_flush_traces (& ddtrace_sidecar );
1600+ if (get_global_DD_TRACE_FORCE_FLUSH_ON_SHUTDOWN () && DDTRACE_G ( sidecar ) ) {
1601+ ddog_sidecar_flush_traces (& DDTRACE_G ( sidecar ) );
15991602 }
16001603
16011604 ddtrace_log_mshutdown ();
@@ -2809,7 +2812,7 @@ PHP_FUNCTION(DDTrace_dogstatsd_set) {
28092812PHP_FUNCTION (DDTrace_are_endpoints_collected ) {
28102813 UNUSED (execute_data );
28112814
2812- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
2815+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
28132816 RETURN_TRUE ; // Skip overhead if unnecessary
28142817 }
28152818
@@ -2865,7 +2868,7 @@ PHP_FUNCTION(DDTrace_add_endpoint) {
28652868 RETURN_FALSE ;
28662869 }
28672870
2868- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
2871+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
28692872 RETURN_FALSE ;
28702873 }
28712874
@@ -2890,7 +2893,7 @@ PHP_FUNCTION(DDTrace_flush_endpoints) {
28902893 UNUSED (execute_data );
28912894 UNUSED (return_value );
28922895
2893- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id ) || !DDTRACE_G (telemetry_buffer )) {
2896+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id ) || !DDTRACE_G (telemetry_buffer )) {
28942897 return ;
28952898 }
28962899
@@ -2902,7 +2905,7 @@ PHP_FUNCTION(DDTrace_flush_endpoints) {
29022905 ddog_CharSlice env_name = dd_zend_string_to_CharSlice (DDTRACE_G (last_env_name ));
29032906
29042907 ddtrace_ffi_try ("Failed flushing endpoint telemetry buffer" ,
2905- ddog_sidecar_telemetry_filter_flush (& ddtrace_sidecar , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), ddtrace_telemetry_buffer (), ddtrace_telemetry_cache (), service_name , env_name ));
2908+ ddog_sidecar_telemetry_filter_flush (& DDTRACE_G ( sidecar ) , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), ddtrace_telemetry_buffer (), ddtrace_telemetry_cache (), service_name , env_name ));
29062909}
29072910
29082911PHP_FUNCTION (dd_trace_send_traces_via_thread ) {
@@ -3004,7 +3007,7 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30043007 }
30053008 } else if (params_count == 1 && FUNCTION_NAME_MATCHES ("detect_composer_installed_json" )) {
30063009 ddog_CharSlice path = dd_zend_string_to_CharSlice (Z_STR_P (ZVAL_VARARG_PARAM (params , 0 )));
3007- ddtrace_detect_composer_installed_json (& ddtrace_sidecar , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), path );
3010+ ddtrace_detect_composer_installed_json (& DDTRACE_G ( sidecar ) , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), path );
30083011 RETVAL_TRUE ;
30093012 } else if (params_count == 2 && FUNCTION_NAME_MATCHES ("mark_integration_loaded" )) {
30103013 zval * name = ZVAL_VARARG_PARAM (params , 0 );
@@ -3032,24 +3035,24 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30323035 RETVAL_TRUE ;
30333036 }
30343037 } else if (FUNCTION_NAME_MATCHES ("dump_sidecar" )) {
3035- if (!ddtrace_sidecar ) {
3038+ if (!DDTRACE_G ( sidecar ) ) {
30363039 RETURN_FALSE ;
30373040 }
3038- ddog_CharSlice slice = ddog_sidecar_dump (& ddtrace_sidecar );
3041+ ddog_CharSlice slice = ddog_sidecar_dump (& DDTRACE_G ( sidecar ) );
30393042 RETVAL_STRINGL (slice .ptr , slice .len );
30403043 free ((void * ) slice .ptr );
30413044 } else if (FUNCTION_NAME_MATCHES ("stats_sidecar" )) {
3042- if (!ddtrace_sidecar ) {
3045+ if (!DDTRACE_G ( sidecar ) ) {
30433046 RETURN_FALSE ;
30443047 }
3045- ddog_CharSlice slice = ddog_sidecar_stats (& ddtrace_sidecar );
3048+ ddog_CharSlice slice = ddog_sidecar_stats (& DDTRACE_G ( sidecar ) );
30463049 RETVAL_STRINGL (slice .ptr , slice .len );
30473050 free ((void * ) slice .ptr );
30483051 } else if (FUNCTION_NAME_MATCHES ("break_sidecar_connection" )) {
3049- if (!ddtrace_sidecar ) {
3052+ if (!DDTRACE_G ( sidecar ) ) {
30503053 RETURN_FALSE ;
30513054 }
3052- ddog_sidecar_send_garbage (& ddtrace_sidecar );
3055+ ddog_sidecar_send_garbage (& DDTRACE_G ( sidecar ) );
30533056 ddtrace_generate_runtime_id ();
30543057 ddtrace_force_new_instance_id ();
30553058 RETURN_TRUE ;
@@ -3079,8 +3082,8 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30793082 }
30803083 } else
30813084#endif
3082- if (ddtrace_sidecar ) {
3083- ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& ddtrace_sidecar ));
3085+ if (DDTRACE_G ( sidecar ) ) {
3086+ ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& DDTRACE_G ( sidecar ) ));
30843087 }
30853088 RETVAL_TRUE ;
30863089#ifndef _WIN32
@@ -3214,8 +3217,8 @@ PHP_FUNCTION(dd_trace_synchronous_flush) {
32143217 }
32153218 } else
32163219#endif
3217- if (ddtrace_sidecar ) {
3218- ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& ddtrace_sidecar ));
3220+ if (DDTRACE_G ( sidecar ) ) {
3221+ ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& DDTRACE_G ( sidecar ) ));
32193222 }
32203223 RETURN_NULL ();
32213224}
0 commit comments