@@ -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 ();
@@ -2811,7 +2814,7 @@ PHP_FUNCTION(DDTrace_dogstatsd_set) {
28112814PHP_FUNCTION (DDTrace_are_endpoints_collected ) {
28122815 UNUSED (execute_data );
28132816
2814- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
2817+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
28152818 RETURN_TRUE ; // Skip overhead if unnecessary
28162819 }
28172820
@@ -2867,7 +2870,7 @@ PHP_FUNCTION(DDTrace_add_endpoint) {
28672870 RETURN_FALSE ;
28682871 }
28692872
2870- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
2873+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id )) {
28712874 RETURN_FALSE ;
28722875 }
28732876
@@ -2892,7 +2895,7 @@ PHP_FUNCTION(DDTrace_flush_endpoints) {
28922895 UNUSED (execute_data );
28932896 UNUSED (return_value );
28942897
2895- if (!ddtrace_sidecar || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id ) || !DDTRACE_G (telemetry_buffer )) {
2898+ if (!DDTRACE_G ( sidecar ) || !ddtrace_sidecar_instance_id || !DDTRACE_G (sidecar_queue_id ) || !DDTRACE_G (telemetry_buffer )) {
28962899 return ;
28972900 }
28982901
@@ -2904,7 +2907,7 @@ PHP_FUNCTION(DDTrace_flush_endpoints) {
29042907 ddog_CharSlice env_name = dd_zend_string_to_CharSlice (DDTRACE_G (last_env_name ));
29052908
29062909 ddtrace_ffi_try ("Failed flushing endpoint telemetry buffer" ,
2907- 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 ));
2910+ 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 ));
29082911}
29092912
29102913PHP_FUNCTION (dd_trace_send_traces_via_thread ) {
@@ -3006,7 +3009,7 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30063009 }
30073010 } else if (params_count == 1 && FUNCTION_NAME_MATCHES ("detect_composer_installed_json" )) {
30083011 ddog_CharSlice path = dd_zend_string_to_CharSlice (Z_STR_P (ZVAL_VARARG_PARAM (params , 0 )));
3009- ddtrace_detect_composer_installed_json (& ddtrace_sidecar , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), path );
3012+ ddtrace_detect_composer_installed_json (& DDTRACE_G ( sidecar ) , ddtrace_sidecar_instance_id , & DDTRACE_G (sidecar_queue_id ), path );
30103013 RETVAL_TRUE ;
30113014 } else if (params_count == 2 && FUNCTION_NAME_MATCHES ("mark_integration_loaded" )) {
30123015 zval * name = ZVAL_VARARG_PARAM (params , 0 );
@@ -3034,24 +3037,24 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30343037 RETVAL_TRUE ;
30353038 }
30363039 } else if (FUNCTION_NAME_MATCHES ("dump_sidecar" )) {
3037- if (!ddtrace_sidecar ) {
3040+ if (!DDTRACE_G ( sidecar ) ) {
30383041 RETURN_FALSE ;
30393042 }
3040- ddog_CharSlice slice = ddog_sidecar_dump (& ddtrace_sidecar );
3043+ ddog_CharSlice slice = ddog_sidecar_dump (& DDTRACE_G ( sidecar ) );
30413044 RETVAL_STRINGL (slice .ptr , slice .len );
30423045 free ((void * ) slice .ptr );
30433046 } else if (FUNCTION_NAME_MATCHES ("stats_sidecar" )) {
3044- if (!ddtrace_sidecar ) {
3047+ if (!DDTRACE_G ( sidecar ) ) {
30453048 RETURN_FALSE ;
30463049 }
3047- ddog_CharSlice slice = ddog_sidecar_stats (& ddtrace_sidecar );
3050+ ddog_CharSlice slice = ddog_sidecar_stats (& DDTRACE_G ( sidecar ) );
30483051 RETVAL_STRINGL (slice .ptr , slice .len );
30493052 free ((void * ) slice .ptr );
30503053 } else if (FUNCTION_NAME_MATCHES ("break_sidecar_connection" )) {
3051- if (!ddtrace_sidecar ) {
3054+ if (!DDTRACE_G ( sidecar ) ) {
30523055 RETURN_FALSE ;
30533056 }
3054- ddog_sidecar_send_garbage (& ddtrace_sidecar );
3057+ ddog_sidecar_send_garbage (& DDTRACE_G ( sidecar ) );
30553058 ddtrace_generate_runtime_id ();
30563059 ddtrace_force_new_instance_id ();
30573060 RETURN_TRUE ;
@@ -3081,8 +3084,8 @@ PHP_FUNCTION(dd_trace_internal_fn) {
30813084 }
30823085 } else
30833086#endif
3084- if (ddtrace_sidecar ) {
3085- ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& ddtrace_sidecar ));
3087+ if (DDTRACE_G ( sidecar ) ) {
3088+ ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& DDTRACE_G ( sidecar ) ));
30863089 }
30873090 RETVAL_TRUE ;
30883091#ifndef _WIN32
@@ -3198,8 +3201,8 @@ PHP_FUNCTION(dd_trace_synchronous_flush) {
31983201 }
31993202 } else
32003203#endif
3201- if (ddtrace_sidecar ) {
3202- ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& ddtrace_sidecar ));
3204+ if (DDTRACE_G ( sidecar ) ) {
3205+ ddtrace_ffi_try ("Failed synchronously flushing traces" , ddog_sidecar_flush_traces (& DDTRACE_G ( sidecar ) ));
32033206 }
32043207 RETURN_NULL ();
32053208}
0 commit comments