-
Notifications
You must be signed in to change notification settings - Fork 457
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ddtrace/tracer: ensure access to trace tags is concurrency-safe (#1948) #1951
Conversation
Spancontext marshaling was accessing tracer internal structures without a lock, resulting in a data race and panic. This commit adds a few methods to trace to allow safe access to the tags and propagatingTags members of trace to the marshaling code. Fixes #1944
BenchmarksComparing candidate commit c7b717e in PR branch Found 1 performance improvements and 0 performance regressions! Performance is the same for 17 metrics, 0 unstable metrics. scenario:BenchmarkConcurrentTracing-24
|
The test failure is fine and is not related to this cherry-pick. It's happening because the bug fixed in #1933 isn't on this release branch (it's on main) and the test which verified the behavior was enabled once that fix was merged to main.
Output of local run with this cherry-pick commit
test_128_bit_traceids.py::test_datadog_128_bit_propagation[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_chars[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_generation_disabled[golang-library_env0]
test_128_bit_traceids.py::test_b3multi_128_bit_propagation[golang-library_env0]
test_128_bit_traceids.py::test_b3single_128_bit_propagation_and_generation[golang-library_env0]
test_128_bit_traceids.py::test_b3multi_128_bit_generation_enabled[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_inconsistent[golang-library_env0]
test_headers_b3.py::test_headers_b3_extract_invalid[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_malformed_optional_tag[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_generation_enabled[golang-library_env0]
[gw7] [ 0%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_malformed_optional_tag[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_and_generation[golang-library_env0]
[gw6] [ 1%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_inconsistent[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_inconsistent_optional_tag[golang-library_env0]
[gw6] [ 1%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_inconsistent_optional_tag[golang-library_env0]
[gw4] [ 2%] SKIPPED test_128_bit_traceids.py::test_b3multi_128_bit_propagation[golang-library_env0]
test_128_bit_traceids.py::test_b3multi_128_bit_propagation_and_generation[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_malformed[golang-library_env0]
[gw5] [ 3%] SKIPPED test_128_bit_traceids.py::test_b3multi_128_bit_generation_enabled[golang-library_env0]
[gw1] [ 3%] SKIPPED test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_chars[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_malformed_optional_tag[golang-library_env0]
[gw6] [ 4%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_malformed[golang-library_env0]
test_headers_b3.py::test_headers_b3_inject_valid[golang-library_env1]
[gw1] [ 5%] SKIPPED test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_malformed_optional_tag[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_propagation_and_generation[golang-library_env0]
[gw5] [ 5%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_propagation[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_consistent[golang-library_env0]
[gw9] [ 6%] SKIPPED test_128_bit_traceids.py::test_w3c_128_bit_generation_enabled[golang-library_env0]
test_headers_b3.py::test_headers_b3_extract_valid[golang-library_env0]
[gw6] [ 7%] PASSED test_headers_b3.py::test_headers_b3_inject_valid[golang-library_env1]
[gw2] [ 7%] PASSED test_128_bit_traceids.py::test_datadog_128_bit_generation_disabled[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_generation_enabled[golang-library_env0]
[gw2] [ 8%] SKIPPED test_128_bit_traceids.py::test_datadog_128_bit_generation_enabled[golang-library_env0]
test_128_bit_traceids.py::test_b3single_128_bit_propagation[golang-library_env0]
[gw2] [ 8%] SKIPPED test_128_bit_traceids.py::test_b3single_128_bit_propagation[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env1]
test_headers_b3.py::test_headers_b3multi_propagate_valid[golang-library_env0]
[gw7] [ 9%] PASSED test_128_bit_traceids.py::test_w3c_128_bit_propagation_and_generation[golang-library_env0]
[gw3] [ 10%] PASSED test_128_bit_traceids.py::test_b3single_128_bit_propagation_and_generation[golang-library_env0]
[gw0] [ 10%] PASSED test_128_bit_traceids.py::test_datadog_128_bit_propagation[golang-library_env0]
[gw4] [ 11%] PASSED test_128_bit_traceids.py::test_b3multi_128_bit_propagation_and_generation[golang-library_env0]
[gw5] [ 12%] PASSED test_128_bit_traceids.py::test_w3c_128_bit_propagation_tid_consistent[golang-library_env0]
[gw8] [ 12%] PASSED test_headers_b3.py::test_headers_b3_extract_invalid[golang-library_env0]
[gw9] [ 13%] PASSED test_headers_b3.py::test_headers_b3_extract_valid[golang-library_env0]
[gw1] [ 14%] PASSED test_128_bit_traceids.py::test_datadog_128_bit_propagation_and_generation[golang-library_env0]
test_128_bit_traceids.py::test_w3c_128_bit_generation_disabled[golang-library_env0]
test_128_bit_traceids.py::test_b3multi_128_bit_generation_disabled[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_long[golang-library_env0]
[gw0] [ 14%] SKIPPED test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_long[golang-library_env0]
test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_short[golang-library_env0]
[gw0] [ 15%] SKIPPED test_128_bit_traceids.py::test_datadog_128_bit_propagation_tid_short[golang-library_env0]
test_headers_datadog.py::test_distributed_headers_extract_datadog_invalid_D002[golang]
test_128_bit_traceids.py::test_b3single_128_bit_generation_disabled[golang-library_env0]
test_headers_b3.py::test_headers_b3_extract_invalid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env1]
test_headers_b3.py::test_headers_b3_extract_valid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env0]
[gw2] [ 16%] PASSED test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env1]
[gw6] [ 16%] PASSED test_headers_b3.py::test_headers_b3multi_propagate_valid[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env2]
test_headers_b3.py::test_headers_b3multi_propagate_valid[golang-library_env1]
[gw4] [ 17%] PASSED test_128_bit_traceids.py::test_b3multi_128_bit_generation_disabled[golang-library_env0]
[gw7] [ 17%] PASSED test_128_bit_traceids.py::test_w3c_128_bit_generation_disabled[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env1]
[gw0] [ 18%] PASSED test_headers_datadog.py::test_distributed_headers_extract_datadog_invalid_D002[golang]
[gw3] [ 19%] PASSED test_128_bit_traceids.py::test_b3single_128_bit_generation_disabled[golang-library_env0]
[gw5] [ 19%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env1]
[gw8] [ 20%] PASSED test_headers_b3.py::test_headers_b3_extract_invalid[golang-library_env1]
[gw9] [ 21%] PASSED test_headers_b3.py::test_headers_b3_extract_valid[golang-library_env1]
test_headers_datadog.py::test_distributed_headers_inject_datadog_D003[golang]
[gw1] [ 21%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env0]
test_128_bit_traceids.py::test_b3single_128_bit_generation_enabled[golang-library_env0]
[gw3] [ 22%] SKIPPED test_128_bit_traceids.py::test_b3single_128_bit_generation_enabled[golang-library_env0]
test_headers_none.py::test_headers_none_extract_with_other_propagators[golang-library_env1]
[gw2] [ 23%] PASSED test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env2]
[gw6] [ 23%] PASSED test_headers_b3.py::test_headers_b3multi_propagate_valid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env2]
test_headers_b3.py::test_headers_b3_inject_valid[golang-library_env0]
test_headers_none.py::test_headers_none_extract[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env1]
[gw4] [ 24%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env3]
test_headers_b3.py::test_headers_b3multi_propagate_invalid[golang-library_env0]
[gw7] [ 25%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env2]
test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env2]
[gw0] [ 25%] PASSED test_headers_datadog.py::test_distributed_headers_inject_datadog_D003[golang]
test_headers_datadog.py::test_distributed_headers_propagate_datadog_D004[golang]
[gw3] [ 26%] PASSED test_headers_none.py::test_headers_none_extract_with_other_propagators[golang-library_env1]
test_headers_none.py::test_headers_none_inject[golang-library_env0]
[gw5] [ 26%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env2]
test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env3]
[gw8] [ 27%] PASSED test_headers_b3.py::test_headers_b3_inject_valid[golang-library_env0]
[gw9] [ 28%] PASSED test_headers_none.py::test_headers_none_extract[golang-library_env0]
[gw1] [ 28%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env1]
[gw2] [ 29%] PASSED test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env3]
test_headers_none.py::test_headers_none_inject_with_other_propagators[golang-library_env0]
[gw6] [ 30%] PASSED test_headers_b3.py::test_headers_b3multi_propagate_invalid[golang-library_env0]
test_headers_none.py::test_headers_none_extract[golang-library_env1]
[gw7] [ 30%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env2]
[gw4] [ 31%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env2]
test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env2]
test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env0]
[gw0] [ 32%] PASSED test_headers_datadog.py::test_distributed_headers_propagate_datadog_D004[golang]
test_headers_b3.py::test_headers_b3multi_propagate_invalid[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env3]
[gw3] [ 32%] PASSED test_headers_none.py::test_headers_none_inject[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env3]
[gw5] [ 33%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env3]
test_headers_datadog.py::test_distributed_headers_extractandinject_datadog_invalid_D005[golang]
test_headers_none.py::test_headers_none_inject[golang-library_env1]
test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env0]
[gw8] [ 33%] PASSED test_headers_none.py::test_headers_none_inject_with_other_propagators[golang-library_env0]
[gw9] [ 34%] PASSED test_headers_none.py::test_headers_none_extract[golang-library_env1]
test_headers_none.py::test_headers_none_inject_with_other_propagators[golang-library_env1]
[gw1] [ 35%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env2]
test_headers_none.py::test_headers_none_extract_with_other_propagators[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env3]
[gw2] [ 35%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env0]
[gw6] [ 36%] PASSED test_headers_b3.py::test_headers_b3multi_propagate_invalid[golang-library_env1]
[gw7] [ 37%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_valid[golang-library_env3]
test_headers_none.py::test_headers_none_propagate[golang-library_env1]
[gw3] [ 37%] PASSED test_headers_none.py::test_headers_none_inject[golang-library_env1]
[gw4] [ 38%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env3]
test_headers_precedence.py::test_headers_precedence_propagationstyle_datadog[golang-library_env0]
[gw0] [ 39%] PASSED test_headers_datadog.py::test_distributed_headers_extractandinject_datadog_invalid_D005[golang]
[gw5] [ 39%] PASSED test_headers_b3multi.py::test_headers_b3multi_inject_valid[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_header_name_valid_casing[golang-library_env0]
test_headers_datadog.py::test_distributed_headers_extract_datadog_D001[golang]
[gw8] [ 40%] PASSED test_headers_none.py::test_headers_none_inject_with_other_propagators[golang-library_env1]
test_headers_tracecontext.py::test_traceparent_included_tracestate_missing[golang-library_env0]
[gw9] [ 41%] PASSED test_headers_none.py::test_headers_none_extract_with_other_propagators[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_version_0xcc[golang-library_env0]
[gw1] [ 41%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_valid[golang-library_env3]
test_headers_none.py::test_headers_none_propagate[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_version_illegal_characters[golang-library_env0]
test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env0]
[gw2] [ 42%] PASSED test_headers_none.py::test_headers_none_propagate[golang-library_env1]
test_headers_precedence.py::test_headers_precedence_propagationstyle_default[golang]
[gw6] [ 42%] PASSED test_headers_precedence.py::test_headers_precedence_propagationstyle_datadog[golang-library_env0]
test_headers_precedence.py::test_headers_precedence_propagationstyle_datadog_tracecontext[golang-library_env0]
[gw6] [ 43%] SKIPPED test_headers_precedence.py::test_headers_precedence_propagationstyle_datadog_tracecontext[golang-library_env0]
test_headers_tracecontext.py::test_both_traceparent_and_tracestate_missing[golang-library_env0]
[gw7] [ 44%] PASSED test_headers_b3multi.py::test_headers_b3multi_propagate_invalid[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_version_too_short[golang-library_env0]
[gw3] [ 44%] PASSED test_headers_tracecontext.py::test_traceparent_header_name_valid_casing[golang-library_env0]
[gw4] [ 45%] PASSED test_headers_datadog.py::test_distributed_headers_extract_datadog_D001[golang]
test_headers_tracecontext.py::test_traceparent_version_0x00[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_id_illegal_characters[golang-library_env0]
[gw0] [ 46%] PASSED test_headers_tracecontext.py::test_traceparent_included_tracestate_missing[golang-library_env0]
[gw5] [ 46%] PASSED test_headers_tracecontext.py::test_traceparent_version_0xcc[golang-library_env0]
[gw8] [ 47%] PASSED test_headers_none.py::test_headers_none_propagate[golang-library_env0]
[gw9] [ 48%] PASSED test_headers_tracecontext.py::test_traceparent_version_illegal_characters[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_duplicated[golang-library_env0]
[gw0] [ 48%] SKIPPED test_headers_tracecontext.py::test_traceparent_duplicated[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_header_name[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_version_0xff[golang-library_env0]
[gw1] [ 49%] PASSED test_headers_b3multi.py::test_headers_b3multi_extract_invalid[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_id_too_short[golang-library_env0]
[gw2] [ 50%] PASSED test_headers_precedence.py::test_headers_precedence_propagationstyle_default[golang]
test_headers_tracecontext.py::test_traceparent_version_too_long[golang-library_env0]
[gw6] [ 50%] PASSED test_headers_tracecontext.py::test_both_traceparent_and_tracestate_missing[golang-library_env0]
[gw7] [ 51%] PASSED test_headers_tracecontext.py::test_traceparent_version_too_short[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_parent_id_illegal_characters[golang-library_env0]
test_headers_precedence.py::test_headers_precedence_propagationstyle_tracecontext[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_parent_id_too_short[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_id_all_zero[golang-library_env0]
[gw3] [ 51%] PASSED test_headers_tracecontext.py::test_traceparent_version_0x00[golang-library_env0]
[gw4] [ 52%] PASSED test_headers_tracecontext.py::test_traceparent_trace_id_illegal_characters[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_flags_too_long[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_id_too_long[golang-library_env0]
[gw0] [ 53%] PASSED test_headers_tracecontext.py::test_traceparent_header_name[golang-library_env0]
[gw5] [ 53%] PASSED test_headers_tracecontext.py::test_traceparent_version_0xff[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_ows_handling[golang-library_env0]
[gw8] [ 54%] PASSED test_headers_tracecontext.py::test_traceparent_trace_id_too_short[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_included_traceparent_included[golang-library_env0]
[gw9] [ 55%] PASSED test_headers_tracecontext.py::test_traceparent_version_too_long[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_parent_id_all_zero[golang-library_env0]
[gw1] [ 55%] PASSED test_headers_tracecontext.py::test_traceparent_parent_id_illegal_characters[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_header_name[golang-library_env0]
[gw7] [ 56%] PASSED test_headers_tracecontext.py::test_traceparent_trace_id_all_zero[golang-library_env0]
[gw6] [ 57%] PASSED test_headers_tracecontext.py::test_traceparent_parent_id_too_short[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_parent_id_too_long[golang-library_env0]
[gw2] [ 57%] PASSED test_headers_precedence.py::test_headers_precedence_propagationstyle_tracecontext[golang-library_env0]
[gw3] [ 58%] PASSED test_headers_tracecontext.py::test_traceparent_trace_flags_too_long[golang-library_env0]
[gw4] [ 58%] PASSED test_headers_tracecontext.py::test_traceparent_trace_id_too_long[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_empty_header[golang-library_env0]
[gw7] [ 59%] SKIPPED test_headers_tracecontext.py::test_tracestate_empty_header[golang-library_env0]
test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_origin[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_flags_illegal_characters[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_header_name_valid_casing[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_multiple_headers_different_keys[golang-library_env0]
[gw4] [ 60%] SKIPPED test_headers_tracecontext.py::test_tracestate_multiple_headers_different_keys[golang-library_env0]
test_library_tracestats.py::test_metrics_msgpack_serialization_TS001[golang-library_env0]
[gw4] [ 60%] SKIPPED test_library_tracestats.py::test_metrics_msgpack_serialization_TS001[golang-library_env0]
test_library_tracestats.py::test_distinct_aggregationkeys_TS003[golang-library_env0]
[gw0] [ 61%] PASSED test_headers_tracecontext.py::test_traceparent_ows_handling[golang-library_env0]
test_headers_tracecontext.py::test_traceparent_trace_flags_too_short[golang-library_env0]
[gw5] [ 62%] PASSED test_headers_tracecontext.py::test_tracestate_included_traceparent_included[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_included_traceparent_missing[golang-library_env0]
[gw8] [ 62%] PASSED test_headers_tracecontext.py::test_traceparent_parent_id_all_zero[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_duplicated_keys[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_all_allowed_characters[golang-library_env0]
[gw1] [ 63%] PASSED test_headers_tracecontext.py::test_traceparent_parent_id_too_long[golang-library_env0]
[gw9] [ 64%] PASSED test_headers_tracecontext.py::test_tracestate_header_name[golang-library_env0]
test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_samplingpriority[golang-library_env0]
test_headers_tracecontext.py::test_tracestate_ows_handling[golang-library_env0]
[gw7] [ 64%] PASSED test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_origin[golang-library_env0]
test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags[golang-library_env0]
[gw7] [ 65%] SKIPPED test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags[golang-library_env0]
test_otel_span_methods.py::test_otel_start_span[golang]
[gw7] [ 66%] SKIPPED test_otel_span_methods.py::test_otel_start_span[golang]
test_otel_span_methods.py::test_otel_set_service_name[golang]
[gw2] [ 66%] PASSED test_headers_tracecontext.py::test_tracestate_header_name_valid_casing[golang-library_env0]
[gw6] [ 67%] PASSED test_headers_tracecontext.py::test_traceparent_trace_flags_illegal_characters[golang-library_env0]
[gw4] [ 67%] PASSED test_library_tracestats.py::test_distinct_aggregationkeys_TS003[golang-library_env0]
[gw3] [ 68%] PASSED test_headers_tracecontext.py::test_traceparent_trace_flags_too_short[golang-library_env0]
test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags_change_sampling_reset_dm[golang-library_env0]
test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags_change_sampling_same_dm[golang-library_env0]
[gw0] [ 69%] PASSED test_headers_tracecontext.py::test_tracestate_included_traceparent_missing[golang-library_env0]
test_library_tracestats.py::test_measured_spans_TS004[golang-library_env0]
[gw5] [ 69%] PASSED test_headers_tracecontext.py::test_tracestate_duplicated_keys[golang-library_env0]
[gw8] [ 70%] PASSED test_headers_tracecontext.py::test_tracestate_all_allowed_characters[golang-library_env0]
test_library_tracestats.py::test_top_level_TS005[golang-library_env0]
test_library_tracestats.py::test_successes_errors_recorded_separately_TS006[golang-library_env0]
[gw1] [ 71%] PASSED test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_samplingpriority[golang-library_env0]
[gw9] [ 71%] PASSED test_headers_tracecontext.py::test_tracestate_ows_handling[golang-library_env0]
test_library_tracestats.py::test_sample_rate_0_TS007[golang-library_env0]
[gw7] [ 72%] PASSED test_otel_span_methods.py::test_otel_set_service_name[golang]
test_library_tracestats.py::test_relative_error_TS008[golang-library_env0]
[gw8] [ 73%] SKIPPED test_library_tracestats.py::test_relative_error_TS008[golang-library_env0]
test_otel_span_with_w3c.py::test_otel_start_span_with_w3c[golang]
[gw8] [ 73%] SKIPPED test_otel_span_with_w3c.py::test_otel_start_span_with_w3c[golang]
test_otel_span_with_w3c.py::test_otel_span_with_w3c_headers[golang]
[gw8] [ 74%] SKIPPED test_otel_span_with_w3c.py::test_otel_span_with_w3c_headers[golang]
test_otel_tracer.py::test_otel_simple_trace[golang]
[gw8] [ 75%] SKIPPED test_otel_tracer.py::test_otel_simple_trace[golang]
test_otel_tracer.py::test_force_flush_otel[golang]
[gw8] [ 75%] SKIPPED test_otel_tracer.py::test_force_flush_otel[golang]
test_partial_flushing.py::test_partial_flushing_one_span[golang-library_env0]
[gw8] [ 76%] SKIPPED test_partial_flushing.py::test_partial_flushing_one_span[golang-library_env0]
test_partial_flushing.py::test_partial_flushing_under_limit_one_payload[golang-library_env0]
[gw8] [ 76%] SKIPPED test_partial_flushing.py::test_partial_flushing_under_limit_one_payload[golang-library_env0]
test_span_sampling.py::test_single_rule_match_span_sampling_sss001[golang-library_env0]
test_library_tracestats.py::test_metrics_computed_after_span_finsh_TS008[golang-library_env0]
test_library_tracestats.py::test_metrics_computed_after_span_finish_TS010[golang-library_env0]
test_otel_span_methods.py::test_otel_set_attributes_different_types[golang]
[gw7] [ 77%] SKIPPED test_otel_span_methods.py::test_otel_set_attributes_different_types[golang]
test_span_sampling.py::test_single_rule_only_name_pattern_no_match_span_sampling_sss005[golang-library_env0]
[gw2] [ 78%] FAILED test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags_change_sampling_reset_dm[golang-library_env0]
test_otel_span_methods.py::test_otel_span_is_recording[golang]
[gw2] [ 78%] SKIPPED test_otel_span_methods.py::test_otel_span_is_recording[golang]
test_span_sampling.py::test_multi_rule_drop_keep_span_sampling_sss007[golang-library_env0]
[gw6] [ 79%] PASSED test_headers_tracestate_dd.py::test_headers_tracestate_dd_propagate_propagatedtags_change_sampling_same_dm[golang-library_env0]
test_otel_span_methods.py::test_otel_span_finished_end_options[golang]
[gw6] [ 80%] SKIPPED test_otel_span_methods.py::test_otel_span_finished_end_options[golang]
test_span_sampling.py::test_sampling_rate_not_absolute_value_sss009[golang-library_env0]
[gw4] [ 80%] PASSED test_library_tracestats.py::test_measured_spans_TS004[golang-library_env0]
test_otel_span_methods.py::test_otel_span_end[golang]
[gw4] [ 81%] SKIPPED test_otel_span_methods.py::test_otel_span_end[golang]
test_span_sampling.py::test_single_rule_always_keep_span_sampling_sss011[golang-library_env0]
[gw4] [ 82%] SKIPPED test_span_sampling.py::test_single_rule_always_keep_span_sampling_sss011[golang-library_env0]
test_span_sampling.py::test_single_rule_tracer_always_keep_span_sampling_sss012[golang-library_env0]
[gw3] [ 82%] PASSED test_library_tracestats.py::test_top_level_TS005[golang-library_env0]
test_otel_span_methods.py::test_otel_set_span_status_error[golang]
[gw3] [ 83%] SKIPPED test_otel_span_methods.py::test_otel_set_span_status_error[golang]
test_span_sampling.py::test_root_span_selected_by_sss014[golang-library_env0]
[gw0] [ 83%] PASSED test_library_tracestats.py::test_successes_errors_recorded_separately_TS006[golang-library_env0]
test_otel_span_methods.py::test_otel_set_span_status_ok[golang]
[gw0] [ 84%] SKIPPED test_otel_span_methods.py::test_otel_set_span_status_ok[golang]
test_span_sampling.py::test_root_span_selected_and_child_dropped_by_sss_when_dropping_policy_is_active016[golang-library_env0]
[gw8] [ 85%] PASSED test_span_sampling.py::test_single_rule_match_span_sampling_sss001[golang-library_env0]
[gw9] [ 85%] PASSED test_library_tracestats.py::test_metrics_computed_after_span_finish_TS010[golang-library_env0]
[gw5] [ 86%] PASSED test_library_tracestats.py::test_sample_rate_0_TS007[golang-library_env0]
[gw1] [ 87%] PASSED test_library_tracestats.py::test_metrics_computed_after_span_finsh_TS008[golang-library_env0]
[gw7] [ 87%] PASSED test_span_sampling.py::test_single_rule_only_name_pattern_no_match_span_sampling_sss005[golang-library_env0]
test_span_sampling.py::test_special_glob_characters_span_sampling_sss002[golang-library_env0]
[gw2] [ 88%] PASSED test_span_sampling.py::test_multi_rule_drop_keep_span_sampling_sss007[golang-library_env0]
test_span_sampling.py::test_single_rule_only_service_pattern_match_span_sampling_sss004[golang-library_env0]
test_otel_span_methods.py::test_otel_get_span_context[golang]
[gw5] [ 89%] SKIPPED test_otel_span_methods.py::test_otel_get_span_context[golang]
test_tracer.py::test_tracer_service_name_environment_variable[golang-library_env0]
[gw5] [ 89%] SKIPPED test_tracer.py::test_tracer_service_name_environment_variable[golang-library_env0]
test_tracer.py::test_tracer_env_environment_variable[golang-library_env0]
test_span_sampling.py::test_single_rule_no_match_span_sampling_sss003[golang-library_env0]
test_span_sampling.py::test_multi_rule_keep_drop_span_sampling_sss006[golang-library_env0]
test_span_sampling.py::test_single_rule_rate_limiter_span_sampling_sss008[golang-library_env0]
[gw6] [ 90%] PASSED test_span_sampling.py::test_sampling_rate_not_absolute_value_sss009[golang-library_env0]
[gw4] [ 91%] PASSED test_span_sampling.py::test_single_rule_tracer_always_keep_span_sampling_sss012[golang-library_env0]
[gw3] [ 91%] PASSED test_span_sampling.py::test_root_span_selected_by_sss014[golang-library_env0]
[gw0] [ 92%] PASSED test_span_sampling.py::test_root_span_selected_and_child_dropped_by_sss_when_dropping_policy_is_active016[golang-library_env0]
test_span_sampling.py::test_keep_span_with_stats_computation_sss010[golang-library_env0]
[gw6] [ 92%] SKIPPED test_span_sampling.py::test_keep_span_with_stats_computation_sss010[golang-library_env0]
test_span_sampling.py::test_multi_rule_independent_rate_limiters_sss013[golang-library_env0]
test_span_sampling.py::test_child_span_selected_by_sss015[golang-library_env0]
test_span_sampling.py::test_child_span_selected_and_root_dropped_by_sss_when_dropping_policy_is_active017[golang-library_env0]
[gw8] [ 93%] PASSED test_span_sampling.py::test_special_glob_characters_span_sampling_sss002[golang-library_env0]
[gw9] [ 94%] PASSED test_span_sampling.py::test_single_rule_only_service_pattern_match_span_sampling_sss004[golang-library_env0]
test_span_sampling.py::test_entire_trace_dropped_when_dropping_policy_is_active018[golang-library_env0]
test_tracer.py::test_tracer_span_top_level_attributes[golang]
[gw5] [ 94%] PASSED test_tracer.py::test_tracer_env_environment_variable[golang-library_env0]
[gw1] [ 95%] PASSED test_span_sampling.py::test_single_rule_no_match_span_sampling_sss003[golang-library_env0]
[gw7] [ 96%] PASSED test_span_sampling.py::test_multi_rule_keep_drop_span_sampling_sss006[golang-library_env0]
[gw3] [ 96%] PASSED test_span_sampling.py::test_child_span_selected_by_sss015[golang-library_env0]
[gw0] [ 97%] PASSED test_span_sampling.py::test_child_span_selected_and_root_dropped_by_sss_when_dropping_policy_is_active017[golang-library_env0]
[gw8] [ 98%] PASSED test_span_sampling.py::test_entire_trace_dropped_when_dropping_policy_is_active018[golang-library_env0]
[gw2] [ 98%] PASSED test_span_sampling.py::test_single_rule_rate_limiter_span_sampling_sss008[golang-library_env0]
[gw9] [ 99%] PASSED test_tracer.py::test_tracer_span_top_level_attributes[golang]
[gw4] [100%] PASSED test_span_sampling.py::test_multi_rule_independent_rate_limiters_sss013[golang-library_env0]
|
This is a cherry-pick of PR #1948
What does this PR do?
This commit adds a few methods to trace to allow safe access to the tags and propagatingTags members of trace to the marshaling code.
Fixes #1944
Motivation
Spancontext marshaling was accessing tracer internal structures without a lock, resulting in a data race and panic.
Describe how to test/QA your changes
Reviewer's Checklist