-
Notifications
You must be signed in to change notification settings - Fork 467
fix(otel): avoids propagating default otel sampling decisions #15217
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
base: main
Are you sure you want to change the base?
Conversation
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 251 ± 5 ms. The average import time from base is: 253 ± 4 ms. The import time difference between this PR and base is: -1.9 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate zachg/otel_do_not_use_invalid_span_context (4b2af70) with baseline main (5feb712) 📈 Performance Regressions (1 suite)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.408µs (SLO: <10.000µs 📉 -95.9%) vs baseline: ~same Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ add_inplace_aspectTime: ✅ 0.412µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +1.9% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ add_inplace_noaspectTime: ✅ 0.318µs (SLO: <10.000µs 📉 -96.8%) vs baseline: -0.3% Memory: ✅ 37.120MB (SLO: <39.000MB -4.8%) vs baseline: +4.6% ✅ add_noaspectTime: ✅ 0.283µs (SLO: <10.000µs 📉 -97.2%) vs baseline: +1.8% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.7% ✅ bytearray_aspectTime: ✅ 1.307µs (SLO: <10.000µs 📉 -86.9%) vs baseline: +0.3% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ bytearray_extend_aspectTime: ✅ 1.483µs (SLO: <10.000µs 📉 -85.2%) vs baseline: ~same Memory: ✅ 37.080MB (SLO: <39.000MB -4.9%) vs baseline: +4.5% ✅ bytearray_extend_noaspectTime: ✅ 0.611µs (SLO: <10.000µs 📉 -93.9%) vs baseline: ~same Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ bytearray_noaspectTime: ✅ 0.480µs (SLO: <10.000µs 📉 -95.2%) vs baseline: -1.0% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +4.7% ✅ bytes_aspectTime: ✅ 1.274µs (SLO: <10.000µs 📉 -87.3%) vs baseline: +0.4% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.9% ✅ bytes_noaspectTime: ✅ 0.492µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -1.3% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +4.8% ✅ bytesio_aspectTime: ✅ 1.317µs (SLO: <10.000µs 📉 -86.8%) vs baseline: -0.7% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ bytesio_noaspectTime: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +0.2% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +5.0% ✅ capitalize_aspectTime: ✅ 0.736µs (SLO: <10.000µs 📉 -92.6%) vs baseline: -1.0% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ capitalize_noaspectTime: ✅ 0.442µs (SLO: <10.000µs 📉 -95.6%) vs baseline: +0.7% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ casefold_aspectTime: ✅ 0.746µs (SLO: <10.000µs 📉 -92.5%) vs baseline: +0.5% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ casefold_noaspectTime: ✅ 0.369µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.8% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ decode_aspectTime: ✅ 0.719µs (SLO: <10.000µs 📉 -92.8%) vs baseline: -1.4% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ decode_noaspectTime: ✅ 0.418µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +0.1% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ encode_aspectTime: ✅ 0.713µs (SLO: <10.000µs 📉 -92.9%) vs baseline: +0.3% Memory: ✅ 37.120MB (SLO: <39.000MB -4.8%) vs baseline: +4.6% ✅ encode_noaspectTime: ✅ 0.400µs (SLO: <10.000µs 📉 -96.0%) vs baseline: -0.3% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +4.9% ✅ format_aspectTime: ✅ 3.342µs (SLO: <10.000µs 📉 -66.6%) vs baseline: -0.6% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ format_map_aspectTime: ✅ 3.931µs (SLO: <10.000µs 📉 -60.7%) vs baseline: +9.3% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +5.0% ✅ format_map_noaspectTime: ✅ 0.772µs (SLO: <10.000µs 📉 -92.3%) vs baseline: -0.1% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.6% ✅ format_noaspectTime: ✅ 0.598µs (SLO: <10.000µs 📉 -94.0%) vs baseline: ~same Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.5% ✅ index_aspectTime: ✅ 0.356µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +0.2% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.6% ✅ index_noaspectTime: ✅ 0.275µs (SLO: <10.000µs 📉 -97.3%) vs baseline: -0.6% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ join_aspectTime: ✅ 1.359µs (SLO: <10.000µs 📉 -86.4%) vs baseline: +0.3% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ join_noaspectTime: ✅ 0.486µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.9% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ ljust_aspectTime: ✅ 2.638µs (SLO: <20.000µs 📉 -86.8%) vs baseline: +0.8% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ ljust_noaspectTime: ✅ 0.404µs (SLO: <10.000µs 📉 -96.0%) vs baseline: +0.1% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ lower_aspectTime: ✅ 2.194µs (SLO: <10.000µs 📉 -78.1%) vs baseline: +0.1% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.9% ✅ lower_noaspectTime: ✅ 0.372µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.2% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ lstrip_aspectTime: ✅ 2.239µs (SLO: <20.000µs 📉 -88.8%) vs baseline: -0.9% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ lstrip_noaspectTime: ✅ 0.383µs (SLO: <10.000µs 📉 -96.2%) vs baseline: ~same Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ modulo_aspectTime: ✅ 0.994µs (SLO: <10.000µs 📉 -90.1%) vs baseline: +0.2% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.7% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.557µs (SLO: <10.000µs 📉 -84.4%) vs baseline: +1.5% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.1% ✅ modulo_aspect_for_bytesTime: ✅ 0.989µs (SLO: <10.000µs 📉 -90.1%) vs baseline: +1.5% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.7% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.196µs (SLO: <10.000µs 📉 -88.0%) vs baseline: ~same Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.1% ✅ modulo_noaspectTime: ✅ 0.626µs (SLO: <10.000µs 📉 -93.7%) vs baseline: -0.2% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ replace_aspectTime: ✅ 5.430µs (SLO: <10.000µs 📉 -45.7%) vs baseline: 📈 +12.1% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.8% ✅ replace_noaspectTime: ✅ 0.462µs (SLO: <10.000µs 📉 -95.4%) vs baseline: +0.6% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.8% ✅ repr_aspectTime: ✅ 0.910µs (SLO: <10.000µs 📉 -90.9%) vs baseline: +1.1% Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%) vs baseline: +5.1% ✅ repr_noaspectTime: ✅ 0.419µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +1.0% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.6% ✅ rstrip_aspectTime: ✅ 1.910µs (SLO: <20.000µs 📉 -90.4%) vs baseline: +0.3% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.6% ✅ rstrip_noaspectTime: ✅ 0.378µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.6% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.7% ✅ slice_aspectTime: ✅ 0.493µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.5% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.9% ✅ slice_noaspectTime: ✅ 0.447µs (SLO: <10.000µs 📉 -95.5%) vs baseline: ~same Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +5.2% ✅ stringio_aspectTime: ✅ 1.728µs (SLO: <10.000µs 📉 -82.7%) vs baseline: 📈 +12.0% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ stringio_noaspectTime: ✅ 0.729µs (SLO: <10.000µs 📉 -92.7%) vs baseline: +1.5% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +4.9% ✅ strip_aspectTime: ✅ 2.242µs (SLO: <20.000µs 📉 -88.8%) vs baseline: +0.1% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.8% ✅ strip_noaspectTime: ✅ 0.384µs (SLO: <10.000µs 📉 -96.2%) vs baseline: +0.6% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +4.6% ✅ swapcase_aspectTime: ✅ 2.410µs (SLO: <10.000µs 📉 -75.9%) vs baseline: -1.0% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.8% ✅ swapcase_noaspectTime: ✅ 0.533µs (SLO: <10.000µs 📉 -94.7%) vs baseline: -0.8% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.8% ✅ title_aspectTime: ✅ 2.331µs (SLO: <10.000µs 📉 -76.7%) vs baseline: -0.6% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ title_noaspectTime: ✅ 0.503µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +0.2% Memory: ✅ 37.120MB (SLO: <39.000MB -4.8%) vs baseline: +4.9% ✅ translate_aspectTime: ✅ 3.471µs (SLO: <10.000µs 📉 -65.3%) vs baseline: +7.0% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.8% ✅ translate_noaspectTime: ✅ 1.042µs (SLO: <10.000µs 📉 -89.6%) vs baseline: +0.5% Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%) vs baseline: +4.6% ✅ upper_aspectTime: ✅ 2.226µs (SLO: <10.000µs 📉 -77.7%) vs baseline: +1.1% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +5.0% ✅ upper_noaspectTime: ✅ 0.366µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -0.7% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.1% 🟡 Near SLO Breach (4 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.456ms (SLO: <22.300ms -8.3%) vs baseline: ~same Memory: ✅ 66.178MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.0% ✅ exception-replay-enabledTime: ✅ 1.337ms (SLO: <1.450ms -7.8%) vs baseline: -0.6% Memory: ✅ 64.171MB (SLO: <67.000MB -4.2%) vs baseline: +4.6% ✅ iastTime: ✅ 20.510ms (SLO: <22.250ms -7.8%) vs baseline: +0.4% Memory: ✅ 66.193MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.2% ✅ profilerTime: ✅ 15.388ms (SLO: <16.550ms -7.0%) vs baseline: ~same Memory: ✅ 54.054MB (SLO: <54.500MB 🟡 -0.8%) vs baseline: +4.9% ✅ resource-renamingTime: ✅ 20.550ms (SLO: <21.750ms -5.5%) vs baseline: -0.2% Memory: ✅ 66.062MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.7% ✅ span-code-originTime: ✅ 25.337ms (SLO: <28.200ms 📉 -10.2%) vs baseline: -0.1% Memory: ✅ 68.077MB (SLO: <69.500MB -2.0%) vs baseline: +6.2% ✅ tracerTime: ✅ 20.488ms (SLO: <21.750ms -5.8%) vs baseline: ~same Memory: ✅ 66.130MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.0% ✅ tracer-and-profilerTime: ✅ 22.601ms (SLO: <23.500ms -3.8%) vs baseline: +0.3% Memory: ✅ 68.014MB (SLO: <68.000MB ~same) vs baseline: +5.1% ✅ tracer-dont-create-db-spansTime: ✅ 19.333ms (SLO: <21.500ms 📉 -10.1%) vs baseline: ~same Memory: ✅ 66.247MB (SLO: <67.000MB 🟡 -1.1%) vs baseline: +5.0% ✅ tracer-minimalTime: ✅ 16.557ms (SLO: <17.500ms -5.4%) vs baseline: -0.7% Memory: ✅ 66.042MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 20.466ms (SLO: <21.750ms -5.9%) vs baseline: ~same Memory: ✅ 67.967MB (SLO: <72.500MB -6.3%) vs baseline: +4.9% ✅ tracer-no-cachesTime: ✅ 18.497ms (SLO: <19.650ms -5.9%) vs baseline: +0.3% Memory: ✅ 66.012MB (SLO: <67.000MB 🟡 -1.5%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 18.780ms (SLO: <20.100ms -6.6%) vs baseline: ~same Memory: ✅ 65.848MB (SLO: <67.000MB 🟡 -1.7%) vs baseline: +4.9% ✅ tracer-no-middlewareTime: ✅ 20.161ms (SLO: <21.500ms -6.2%) vs baseline: +0.3% Memory: ✅ 66.080MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.8% ✅ tracer-no-templatesTime: ✅ 20.335ms (SLO: <22.000ms -7.6%) vs baseline: +0.4% Memory: ✅ 66.105MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +4.9% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.070ms (SLO: <19.850ms -9.0%) vs baseline: +0.2% Memory: ✅ 66.119MB (SLO: <66.500MB 🟡 -0.6%) vs baseline: +4.9% ✅ errortracking-enabled-userTime: ✅ 18.143ms (SLO: <19.400ms -6.5%) vs baseline: +0.9% Memory: ✅ 66.086MB (SLO: <66.500MB 🟡 -0.6%) vs baseline: +4.5% ✅ tracer-enabledTime: ✅ 18.062ms (SLO: <19.450ms -7.1%) vs baseline: +0.3% Memory: ✅ 65.746MB (SLO: <66.500MB 🟡 -1.1%) vs baseline: +4.8% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.072ms (SLO: <2.300ms -9.9%) vs baseline: -0.3% Memory: ✅ 52.455MB (SLO: <53.500MB 🟡 -2.0%) vs baseline: +4.6% ✅ errortracking-enabled-userTime: ✅ 2.067ms (SLO: <2.250ms -8.1%) vs baseline: -0.8% Memory: ✅ 52.416MB (SLO: <53.500MB -2.0%) vs baseline: +4.5% ✅ tracer-enabledTime: ✅ 2.075ms (SLO: <2.300ms -9.8%) vs baseline: +0.2% Memory: ✅ 52.435MB (SLO: <53.500MB 🟡 -2.0%) vs baseline: +4.8% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.599ms (SLO: <4.750ms -3.2%) vs baseline: -0.4% Memory: ✅ 62.370MB (SLO: <65.000MB -4.0%) vs baseline: +4.8% ✅ appsec-postTime: ✅ 6.634ms (SLO: <6.750ms 🟡 -1.7%) vs baseline: ~same Memory: ✅ 62.379MB (SLO: <65.000MB -4.0%) vs baseline: +4.9% ✅ appsec-telemetryTime: ✅ 4.590ms (SLO: <4.750ms -3.4%) vs baseline: -0.4% Memory: ✅ 62.300MB (SLO: <65.000MB -4.2%) vs baseline: +4.8% ✅ debuggerTime: ✅ 1.856ms (SLO: <2.000ms -7.2%) vs baseline: -0.2% Memory: ✅ 45.077MB (SLO: <47.000MB -4.1%) vs baseline: +4.3% ✅ iast-getTime: ✅ 1.858ms (SLO: <2.000ms -7.1%) vs baseline: ~same Memory: ✅ 42.056MB (SLO: <49.000MB 📉 -14.2%) vs baseline: +4.7% ✅ profilerTime: ✅ 1.915ms (SLO: <2.100ms -8.8%) vs baseline: ~same Memory: ✅ 46.607MB (SLO: <47.000MB 🟡 -0.8%) vs baseline: +4.7% ✅ resource-renamingTime: ✅ 3.366ms (SLO: <3.650ms -7.8%) vs baseline: -0.5% Memory: ✅ 52.590MB (SLO: <53.500MB 🟡 -1.7%) vs baseline: +4.9% ✅ tracerTime: ✅ 3.354ms (SLO: <3.650ms -8.1%) vs baseline: -0.4% Memory: ✅ 52.520MB (SLO: <53.500MB 🟡 -1.8%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 3.360ms (SLO: <3.650ms -7.9%) vs baseline: ~same Memory: ✅ 54.292MB (SLO: <60.000MB -9.5%) vs baseline: +4.7%
|
Description
Fixed sampling issues when using the OpenTelemetry API where OpenTelemetry's default unsampled state incorrectly overrode Datadog's sampled-by-default convention, causing sampling rules and global sample rates to be ignored.
Key Difference: OpenTelemetry defaults to unsampled traces, Datadog defaults to sampled. This fix ensures ddtrace maintains Datadog's convention.
Two Related Issues
1.
get_current_span()with no active spanINVALID_SPANwith unsampled trace flag2.
NonRecordingSpanwith default trace flagsDEFAULT_TRACE_OPTIONSis unsampled by defaultSolution
Convert OpenTelemetry's
DEFAULT_TRACE_OPTIONStoNoneso ddtrace ignores it. This ensures:Testing
Added tests confirming sampling decisions are properly applied according to Datadog conventions.
Risks
Low. Fixes incorrect behavior.
Additional Notes
Ensures OpenTelemetry API usage respects Datadog's sampling behavior.