Skip to content

Conversation

@christophe-papazian
Copy link
Contributor

@christophe-papazian christophe-papazian commented Aug 22, 2025

APPSEC-58261

Following guidelines on internal document "Client IP addresses resolution"

Checklist

  • PR author has checked that all the criteria below are met
  • The PR description includes an overview of the change
  • The PR description articulates the motivation for the change
  • The change includes tests OR the PR description describes a testing strategy
  • The PR description notes risks associated with the change, if any
  • Newly-added code is easy to change
  • The change follows the library release note guidelines
  • The change includes or references documentation updates if necessary
  • Backport labels are set (if applicable)

Reviewer Checklist

  • Reviewer has checked that all the criteria below are met
  • Title is accurate
  • All changes are related to the pull request's stated goal
  • Avoids breaking API changes
  • Testing strategy adequately addresses listed risks
  • Newly-added code is easy to change
  • Release note makes sense to a user of the library
  • If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
  • Backport labels are set in a manner that is consistent with the release branch maintenance policy

@christophe-papazian christophe-papazian added changelog/no-changelog A changelog entry is not required for this PR. ASM Application Security Monitoring labels Aug 22, 2025
@github-actions
Copy link
Contributor

CODEOWNERS have been resolved as:

ddtrace/contrib/internal/trace_utils.py                                 @DataDog/apm-core-python @DataDog/apm-idm-python
tests/tracer/test_trace_utils.py                                        @DataDog/apm-sdk-api-python

@github-actions
Copy link
Contributor

github-actions bot commented Aug 22, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 288 ± 6 ms.

The average import time from base is: 290 ± 6 ms.

The import time difference between this PR and base is: -2.2 ± 0.3 ms.

Import time breakdown

The following import paths have appeared:

ddtrace.auto 1.658 ms (0.58%)
ddtrace 1.658 ms (0.58%)
ddtrace._monkey 1.658 ms (0.58%)
ddtrace.appsec._listeners 1.658 ms (0.58%)
ddtrace.settings.asm 1.658 ms (0.58%)
ddtrace.internal.endpoints 1.658 ms (0.58%)

The following import paths have disappeared:

ddtrace.auto 1.773 ms (0.62%)
ddtrace 1.773 ms (0.62%)
ddtrace._logger 1.773 ms (0.62%)
ddtrace.internal.telemetry 1.773 ms (0.62%)
ddtrace.internal.telemetry.writer 1.773 ms (0.62%)
ddtrace.internal.endpoints 1.773 ms (0.62%)

The following import paths have grown:

ddtrace.auto 3.944 ms (1.37%)
ddtrace 2.192 ms (0.76%)
ddtrace.settings._config 0.905 ms (0.31%)
ddtrace.internal.gitmetadata 0.812 ms (0.28%)
ddtrace.ext.ci 0.812 ms (0.28%)
ddtrace.ext.git 0.812 ms (0.28%)
shutil 0.764 ms (0.27%)
ddtrace.settings.endpoint_config 0.093 ms (0.03%)
ddtrace.internal.utils.retry 0.093 ms (0.03%)
ddtrace._logger 0.700 ms (0.24%)
ddtrace.internal.telemetry 0.700 ms (0.24%)
ddtrace.internal.telemetry.writer 0.700 ms (0.24%)
ddtrace.internal.periodic 0.213 ms (0.07%)
ddtrace.internal._threads 0.128 ms (0.04%)
ddtrace.internal.utils.http 0.116 ms (0.04%)
http.client 0.115 ms (0.04%)
ssl 0.115 ms (0.04%)
_ssl 0.115 ms (0.04%)
ddtrace.internal.atexit 0.089 ms (0.03%)
__future__ 0.089 ms (0.03%)
ddtrace.internal.telemetry.data 0.085 ms (0.03%)
ddtrace.internal.runtime.container 0.085 ms (0.03%)
ddtrace.internal.utils.time 0.082 ms (0.03%)
ddtrace.trace 0.587 ms (0.20%)
ddtrace._trace.filters 0.462 ms (0.16%)
ddtrace._trace.processor 0.462 ms (0.16%)
ddtrace._trace.sampler 0.261 ms (0.09%)
ddtrace._trace.span 0.151 ms (0.05%)
ddtrace._trace._span_pointer 0.151 ms (0.05%)
hashlib 0.151 ms (0.05%)
_hashlib 0.151 ms (0.05%)
ddtrace.internal.sampling 0.110 ms (0.04%)
ddtrace.internal.writer 0.201 ms (0.07%)
ddtrace.internal.writer.writer 0.201 ms (0.07%)
ddtrace.internal.dogstatsd 0.107 ms (0.04%)
ddtrace.vendor.dogstatsd 0.107 ms (0.04%)
ddtrace.vendor.dogstatsd.base 0.107 ms (0.04%)
queue 0.107 ms (0.04%)
ddtrace._trace.tracer 0.124 ms (0.04%)
ddtrace.internal.processor.endpoint_call_counter 0.124 ms (0.04%)
ddtrace.bootstrap.sitecustomize 1.752 ms (0.61%)
ddtrace.bootstrap.preload 1.752 ms (0.61%)
ddtrace.internal.products 1.008 ms (0.35%)
importlib.metadata 1.008 ms (0.35%)
csv 0.787 ms (0.27%)
importlib.abc 0.080 ms (0.03%)
importlib.resources 0.080 ms (0.03%)
importlib.resources._legacy 0.080 ms (0.03%)
zipfile 0.076 ms (0.03%)
zipfile._path 0.076 ms (0.03%)
importlib.metadata._collections 0.066 ms (0.02%)
multiprocessing 0.657 ms (0.23%)
multiprocessing.context 0.657 ms (0.23%)
multiprocessing.process 0.657 ms (0.23%)
ddtrace.internal.runtime.runtime_metrics 0.088 ms (0.03%)
ddtrace.internal.runtime.metric_collectors 0.088 ms (0.03%)
ddtrace.internal.runtime.collector 0.088 ms (0.03%)

The following import paths have shrunk:

ddtrace.auto 5.791 ms (2.01%)
ddtrace.bootstrap.sitecustomize 3.289 ms (1.14%)
ddtrace.bootstrap.preload 3.289 ms (1.14%)
ddtrace.internal.products 1.046 ms (0.36%)
importlib.metadata 0.956 ms (0.33%)
zipfile 0.805 ms (0.28%)
importlib.abc 0.075 ms (0.03%)
importlib.resources 0.075 ms (0.03%)
importlib.resources._common 0.075 ms (0.03%)
importlib.resources._adapters 0.075 ms (0.03%)
importlib.metadata._adapters 0.075 ms (0.03%)
ddtrace.internal.uwsgi 0.091 ms (0.03%)
ddtrace.internal.remoteconfig.client 0.774 ms (0.27%)
multiprocessing 0.677 ms (0.24%)
multiprocessing.context 0.677 ms (0.24%)
multiprocessing.reduction 0.677 ms (0.24%)
pickle 0.677 ms (0.24%)
_pickle 0.677 ms (0.24%)
ddtrace 2.502 ms (0.87%)
ddtrace.settings._config 0.865 ms (0.30%)
ddtrace.internal.gitmetadata 0.865 ms (0.30%)
ddtrace.ext.ci 0.865 ms (0.30%)
ddtrace.ext.git 0.752 ms (0.26%)
shutil 0.752 ms (0.26%)
bz2 0.752 ms (0.26%)
_bz2 0.752 ms (0.26%)
ddtrace.ext 0.113 ms (0.04%)
ddtrace.trace 0.549 ms (0.19%)
ddtrace._trace.filters 0.430 ms (0.15%)
ddtrace._trace.processor 0.430 ms (0.15%)
ddtrace.internal.writer 0.189 ms (0.07%)
ddtrace.internal.writer.writer 0.189 ms (0.07%)
gzip 0.109 ms (0.04%)
ddtrace.internal.dogstatsd 0.080 ms (0.03%)
ddtrace.vendor.dogstatsd 0.080 ms (0.03%)
ddtrace.vendor.dogstatsd.base 0.080 ms (0.03%)
ddtrace.vendor.dogstatsd.route 0.080 ms (0.03%)
ddtrace._trace.sampler 0.119 ms (0.04%)
ddtrace._trace.span 0.119 ms (0.04%)
ddtrace._trace.provider 0.118 ms (0.04%)
ddtrace._logger 0.351 ms (0.12%)
ddtrace.internal.telemetry 0.351 ms (0.12%)
ddtrace.internal.telemetry.writer 0.351 ms (0.12%)
ddtrace.internal.telemetry.data 0.101 ms (0.04%)
ddtrace.internal.packages 0.101 ms (0.04%)
ddtrace.settings._telemetry 0.096 ms (0.03%)
ddtrace.settings._inferred_base_service 0.096 ms (0.03%)
ddtrace.internal.periodic 0.082 ms (0.03%)
ddtrace.internal.service 0.082 ms (0.03%)
ddtrace.internal.runtime 0.073 ms (0.03%)
uuid 0.073 ms (0.03%)
platform 0.073 ms (0.03%)
ddtrace.internal._unpatched 0.034 ms (0.01%)
json 0.034 ms (0.01%)
json.decoder 0.034 ms (0.01%)
re 0.034 ms (0.01%)
enum 0.034 ms (0.01%)
types 0.034 ms (0.01%)

@pr-commenter
Copy link

pr-commenter bot commented Aug 22, 2025

Performance SLOs

Candidate: christophe-papazian/ip_forwarded (b3c2e4a)

🔵 No Baseline Data (24 suites)
🔵 coreapiscenario - 12/12 (2 unstable)

🔵 No baseline data available for this suite

⚠️ context_with_data_listeners

Time: ⚠️ 13.411µs (SLO: <20.000µs 📉 -32.9%)

Memory: ✅ 31.261MB (SLO: <33.500MB -6.7%)


✅ context_with_data_no_listeners

Time: ✅ 3.404µs (SLO: <10.000µs 📉 -66.0%)

Memory: ✅ 31.300MB (SLO: <33.500MB -6.6%)


⚠️ context_with_data_only_all_listeners

Time: ⚠️ 13.425µs (SLO: <20.000µs 📉 -32.9%)

Memory: ✅ 31.280MB (SLO: <33.500MB -6.6%)


✅ get_item_exists

Time: ✅ 0.591µs (SLO: <10.000µs 📉 -94.1%)

Memory: ✅ 31.320MB (SLO: <33.500MB -6.5%)


✅ get_item_missing

Time: ✅ 0.639µs (SLO: <10.000µs 📉 -93.6%)

Memory: ✅ 31.280MB (SLO: <33.500MB -6.6%)


✅ set_item

Time: ✅ 24.138µs (SLO: <30.000µs 📉 -19.5%)

Memory: ✅ 31.300MB (SLO: <33.500MB -6.6%)


🔵 djangosimple - 24/24

🔵 No baseline data available for this suite

✅ appsec

Time: ✅ 20.838ms (SLO: <22.300ms -6.6%)

Memory: ✅ 64.271MB (SLO: <66.000MB -2.6%)


✅ exception-replay-enabled

Time: ✅ 1.390ms (SLO: <1.450ms -4.1%)

Memory: ✅ 62.915MB (SLO: <66.000MB -4.7%)


✅ iast

Time: ✅ 20.920ms (SLO: <22.250ms -6.0%)

Memory: ✅ 64.330MB (SLO: <66.000MB -2.5%)


✅ profiler

Time: ✅ 15.182ms (SLO: <16.550ms -8.3%)

Memory: ✅ 52.823MB (SLO: <53.500MB 🟡 -1.3%)


✅ span-code-origin

Time: ✅ 26.524ms (SLO: <28.200ms -5.9%)

Memory: ✅ 66.234MB (SLO: <68.500MB -3.3%)


✅ tracer

Time: ✅ 20.906ms (SLO: <21.750ms -3.9%)

Memory: ✅ 64.330MB (SLO: <66.000MB -2.5%)


✅ tracer-and-profiler

Time: ✅ 22.508ms (SLO: <23.500ms -4.2%)

Memory: ✅ 65.234MB (SLO: <67.000MB -2.6%)


✅ tracer-dont-create-db-spans

Time: ✅ 19.708ms (SLO: <21.500ms -8.3%)

Memory: ✅ 63.878MB (SLO: <66.000MB -3.2%)


✅ tracer-no-caches

Time: ✅ 18.638ms (SLO: <19.650ms -5.1%)

Memory: ✅ 63.878MB (SLO: <66.000MB -3.2%)


✅ tracer-no-databases

Time: ✅ 19.223ms (SLO: <20.100ms -4.4%)

Memory: ✅ 63.898MB (SLO: <66.000MB -3.2%)


✅ tracer-no-middleware

Time: ✅ 20.570ms (SLO: <21.500ms -4.3%)

Memory: ✅ 63.937MB (SLO: <66.000MB -3.1%)


✅ tracer-no-templates

Time: ✅ 20.719ms (SLO: <22.000ms -5.8%)

Memory: ✅ 63.957MB (SLO: <66.000MB -3.1%)


🔵 errortrackingdjangosimple - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 18.182ms (SLO: <19.850ms -8.4%)

Memory: ✅ 63.771MB (SLO: <65.500MB -2.6%)


✅ errortracking-enabled-user

Time: ✅ 18.370ms (SLO: <19.400ms -5.3%)

Memory: ✅ 63.931MB (SLO: <65.500MB -2.4%)


✅ tracer-enabled

Time: ✅ 18.397ms (SLO: <19.450ms -5.4%)

Memory: ✅ 63.884MB (SLO: <65.500MB -2.5%)


🔵 errortrackingflasksqli - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 2.135ms (SLO: <2.300ms -7.2%)

Memory: ✅ 51.037MB (SLO: <53.500MB -4.6%)


✅ errortracking-enabled-user

Time: ✅ 2.135ms (SLO: <2.250ms -5.1%)

Memory: ✅ 51.018MB (SLO: <53.500MB -4.6%)


✅ tracer-enabled

Time: ✅ 2.137ms (SLO: <2.300ms -7.1%)

Memory: ✅ 51.076MB (SLO: <53.500MB -4.5%)


🔵 flasksimple - 15/15

🔵 No baseline data available for this suite

✅ appsec-get

Time: ✅ 4.615ms (SLO: <4.750ms -2.8%)

Memory: ✅ 61.924MB (SLO: <64.500MB -4.0%)


✅ appsec-post

Time: ✅ 6.654ms (SLO: <6.750ms 🟡 -1.4%)

Memory: ✅ 61.997MB (SLO: <64.500MB -3.9%)


✅ appsec-telemetry

Time: ✅ 4.625ms (SLO: <4.750ms -2.6%)

Memory: ✅ 61.809MB (SLO: <64.500MB -4.2%)


✅ debugger

Time: ✅ 1.862ms (SLO: <2.000ms -6.9%)

Memory: ✅ 44.591MB (SLO: <45.000MB 🟡 -0.9%)


✅ iast-get

Time: ✅ 1.856ms (SLO: <2.000ms -7.2%)

Memory: ✅ 41.583MB (SLO: <49.000MB 📉 -15.1%)


✅ profiler

Time: ✅ 1.915ms (SLO: <2.100ms -8.8%)

Memory: ✅ 44.157MB (SLO: <46.500MB -5.0%)


✅ tracer

Time: ✅ 3.422ms (SLO: <3.650ms -6.2%)

Memory: ✅ 51.236MB (SLO: <53.500MB -4.2%)


🔵 flasksqli - 6/6

🔵 No baseline data available for this suite

✅ appsec-enabled

Time: ✅ 3.996ms (SLO: <4.200ms -4.9%)

Memory: ✅ 62.045MB (SLO: <66.000MB -6.0%)


✅ iast-enabled

Time: ✅ 2.562ms (SLO: <2.800ms -8.5%)

Memory: ✅ 57.629MB (SLO: <59.000MB -2.3%)


✅ tracer-enabled

Time: ✅ 2.133ms (SLO: <2.250ms -5.2%)

Memory: ✅ 51.057MB (SLO: <53.500MB -4.6%)


🔵 httppropagationextract - 60/60

🔵 No baseline data available for this suite

✅ all_styles_all_headers

Time: ✅ 82.159µs (SLO: <100.000µs 📉 -17.8%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ b3_headers

Time: ✅ 14.317µs (SLO: <20.000µs 📉 -28.4%)

Memory: ✅ 31.339MB (SLO: <33.500MB -6.4%)


✅ b3_single_headers

Time: ✅ 13.305µs (SLO: <20.000µs 📉 -33.5%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: ✅ 64.757µs (SLO: <80.000µs 📉 -19.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: ✅ 66.489µs (SLO: <80.000µs 📉 -16.9%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ empty_headers

Time: ✅ 1.600µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ full_t_id_datadog_headers

Time: ✅ 23.070µs (SLO: <30.000µs 📉 -23.1%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ invalid_priority_header

Time: ✅ 6.510µs (SLO: <10.000µs 📉 -34.9%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ invalid_span_id_header

Time: ✅ 6.519µs (SLO: <10.000µs 📉 -34.8%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ invalid_tags_header

Time: ✅ 6.476µs (SLO: <10.000µs 📉 -35.2%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ invalid_trace_id_header

Time: ✅ 6.489µs (SLO: <10.000µs 📉 -35.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ large_header_no_matches

Time: ✅ 27.560µs (SLO: <30.000µs -8.1%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ large_valid_headers_all

Time: ✅ 28.739µs (SLO: <40.000µs 📉 -28.2%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ medium_header_no_matches

Time: ✅ 9.793µs (SLO: <20.000µs 📉 -51.0%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ medium_valid_headers_all

Time: ✅ 11.278µs (SLO: <20.000µs 📉 -43.6%)

Memory: ✅ 31.359MB (SLO: <33.500MB -6.4%)


✅ none_propagation_style

Time: ✅ 1.692µs (SLO: <10.000µs 📉 -83.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ tracecontext_headers

Time: ✅ 35.183µs (SLO: <40.000µs 📉 -12.0%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ valid_headers_all

Time: ✅ 6.492µs (SLO: <10.000µs 📉 -35.1%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ valid_headers_basic

Time: ✅ 6.056µs (SLO: <10.000µs 📉 -39.4%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_empty_headers

Time: ✅ 1.588µs (SLO: <10.000µs 📉 -84.1%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_invalid_priority_header

Time: ✅ 6.531µs (SLO: <10.000µs 📉 -34.7%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_span_id_header

Time: ✅ 1.583µs (SLO: <10.000µs 📉 -84.2%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_invalid_tags_header

Time: ✅ 6.578µs (SLO: <10.000µs 📉 -34.2%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_trace_id_header

Time: ✅ 6.579µs (SLO: <10.000µs 📉 -34.2%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ wsgi_large_header_no_matches

Time: ✅ 28.669µs (SLO: <40.000µs 📉 -28.3%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_large_valid_headers_all

Time: ✅ 29.788µs (SLO: <40.000µs 📉 -25.5%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_medium_header_no_matches

Time: ✅ 10.130µs (SLO: <20.000µs 📉 -49.4%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ wsgi_medium_valid_headers_all

Time: ✅ 11.631µs (SLO: <20.000µs 📉 -41.8%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ wsgi_valid_headers_all

Time: ✅ 6.535µs (SLO: <10.000µs 📉 -34.7%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ wsgi_valid_headers_basic

Time: ✅ 6.102µs (SLO: <10.000µs 📉 -39.0%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


🔵 httppropagationinject - 16/16

🔵 No baseline data available for this suite

✅ ids_only

Time: ✅ 22.331µs (SLO: <30.000µs 📉 -25.6%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_all

Time: ✅ 34.380µs (SLO: <40.000µs 📉 -14.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ with_dd_origin

Time: ✅ 28.902µs (SLO: <30.000µs -3.7%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_priority_and_origin

Time: ✅ 28.066µs (SLO: <40.000µs 📉 -29.8%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ with_sampling_priority

Time: ✅ 22.144µs (SLO: <30.000µs 📉 -26.2%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ with_tags

Time: ✅ 30.729µs (SLO: <40.000µs 📉 -23.2%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ with_tags_invalid

Time: ✅ 33.749µs (SLO: <40.000µs 📉 -15.6%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ with_tags_max_size

Time: ✅ 31.213µs (SLO: <40.000µs 📉 -22.0%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


🔵 iast_aspects - 40/40

🔵 No baseline data available for this suite

✅ re_expand_aspect

Time: ✅ 32.872µs (SLO: <40.000µs 📉 -17.8%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_expand_noaspect

Time: ✅ 28.380µs (SLO: <40.000µs 📉 -29.1%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_findall_aspect

Time: ✅ 3.636µs (SLO: <10.000µs 📉 -63.6%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_findall_noaspect

Time: ✅ 1.411µs (SLO: <10.000µs 📉 -85.9%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_finditer_aspect

Time: ✅ 5.092µs (SLO: <10.000µs 📉 -49.1%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_finditer_noaspect

Time: ✅ 1.404µs (SLO: <10.000µs 📉 -86.0%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_fullmatch_aspect

Time: ✅ 3.355µs (SLO: <10.000µs 📉 -66.5%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_fullmatch_noaspect

Time: ✅ 1.289µs (SLO: <10.000µs 📉 -87.1%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_group_aspect

Time: ✅ 3.387µs (SLO: <10.000µs 📉 -66.1%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_group_noaspect

Time: ✅ 1.597µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_groups_aspect

Time: ✅ 3.572µs (SLO: <10.000µs 📉 -64.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_groups_noaspect

Time: ✅ 1.686µs (SLO: <10.000µs 📉 -83.1%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_match_aspect

Time: ✅ 3.391µs (SLO: <10.000µs 📉 -66.1%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_match_noaspect

Time: ✅ 1.295µs (SLO: <10.000µs 📉 -87.0%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_search_aspect

Time: ✅ 3.258µs (SLO: <10.000µs 📉 -67.4%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ re_search_noaspect

Time: ✅ 1.194µs (SLO: <10.000µs 📉 -88.1%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_sub_aspect

Time: ✅ 4.599µs (SLO: <10.000µs 📉 -54.0%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_sub_noaspect

Time: ✅ 1.538µs (SLO: <10.000µs 📉 -84.6%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_subn_aspect

Time: ✅ 4.836µs (SLO: <10.000µs 📉 -51.6%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_subn_noaspect

Time: ✅ 1.595µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


🔵 iastaspects - 118/118

🔵 No baseline data available for this suite

✅ add_aspect

Time: ✅ 0.327µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ add_inplace_aspect

Time: ✅ 0.329µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ add_inplace_noaspect

Time: ✅ 0.317µs (SLO: <10.000µs 📉 -96.8%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ add_noaspect

Time: ✅ 0.280µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%)


✅ bytearray_aspect

Time: ✅ 1.822µs (SLO: <10.000µs 📉 -81.8%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ bytearray_extend_aspect

Time: ✅ 1.374µs (SLO: <10.000µs 📉 -86.3%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ bytearray_extend_noaspect

Time: ✅ 0.613µs (SLO: <10.000µs 📉 -93.9%)

Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%)


✅ bytearray_noaspect

Time: ✅ 0.485µs (SLO: <10.000µs 📉 -95.1%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ bytes_aspect

Time: ✅ 1.849µs (SLO: <10.000µs 📉 -81.5%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ bytes_noaspect

Time: ✅ 0.487µs (SLO: <10.000µs 📉 -95.1%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ bytesio_aspect

Time: ✅ 1.880µs (SLO: <10.000µs 📉 -81.2%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ bytesio_noaspect

Time: ✅ 0.499µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ capitalize_aspect

Time: ✅ 0.741µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ capitalize_noaspect

Time: ✅ 0.437µs (SLO: <10.000µs 📉 -95.6%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ casefold_aspect

Time: ✅ 0.738µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ casefold_noaspect

Time: ✅ 0.366µs (SLO: <10.000µs 📉 -96.3%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ decode_aspect

Time: ✅ 0.721µs (SLO: <10.000µs 📉 -92.8%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ decode_noaspect

Time: ✅ 0.416µs (SLO: <10.000µs 📉 -95.8%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ encode_aspect

Time: ✅ 0.709µs (SLO: <10.000µs 📉 -92.9%)

Memory: ✅ 37.021MB (SLO: <39.000MB -5.1%)


✅ encode_noaspect

Time: ✅ 0.401µs (SLO: <10.000µs 📉 -96.0%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ format_aspect

Time: ✅ 3.753µs (SLO: <10.000µs 📉 -62.5%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ format_map_aspect

Time: ✅ 3.189µs (SLO: <10.000µs 📉 -68.1%)

Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%)


✅ format_map_noaspect

Time: ✅ 0.777µs (SLO: <10.000µs 📉 -92.2%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ format_noaspect

Time: ✅ 0.594µs (SLO: <10.000µs 📉 -94.1%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ index_aspect

Time: ✅ 0.344µs (SLO: <10.000µs 📉 -96.6%)

Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%)


✅ index_noaspect

Time: ✅ 0.276µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ join_aspect

Time: ✅ 1.235µs (SLO: <10.000µs 📉 -87.7%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ join_noaspect

Time: ✅ 0.490µs (SLO: <10.000µs 📉 -95.1%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ ljust_aspect

Time: ✅ 10.175µs (SLO: <20.000µs 📉 -49.1%)

Memory: ✅ 37.356MB (SLO: <39.000MB -4.2%)


✅ ljust_noaspect

Time: ✅ 0.402µs (SLO: <10.000µs 📉 -96.0%)

Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%)


✅ lower_aspect

Time: ✅ 2.225µs (SLO: <10.000µs 📉 -77.8%)

Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%)


✅ lower_noaspect

Time: ✅ 0.369µs (SLO: <10.000µs 📉 -96.3%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ lstrip_aspect

Time: ✅ 10.226µs (SLO: <20.000µs 📉 -48.9%)

Memory: ✅ 37.336MB (SLO: <39.000MB -4.3%)


✅ lstrip_noaspect

Time: ✅ 0.381µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ modulo_aspect

Time: ✅ 0.943µs (SLO: <10.000µs 📉 -90.6%)

Memory: ✅ 36.962MB (SLO: <39.000MB -5.2%)


✅ modulo_aspect_for_bytearray_bytearray

Time: ✅ 1.450µs (SLO: <10.000µs 📉 -85.5%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ modulo_aspect_for_bytes

Time: ✅ 0.916µs (SLO: <10.000µs 📉 -90.8%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ modulo_aspect_for_bytes_bytearray

Time: ✅ 1.132µs (SLO: <10.000µs 📉 -88.7%)

Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%)


✅ modulo_noaspect

Time: ✅ 0.625µs (SLO: <10.000µs 📉 -93.8%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ replace_aspect

Time: ✅ 4.515µs (SLO: <10.000µs 📉 -54.8%)

Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%)


✅ replace_noaspect

Time: ✅ 0.458µs (SLO: <10.000µs 📉 -95.4%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ repr_aspect

Time: ✅ 0.909µs (SLO: <10.000µs 📉 -90.9%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ repr_noaspect

Time: ✅ 0.418µs (SLO: <10.000µs 📉 -95.8%)

Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%)


✅ rstrip_aspect

Time: ✅ 10.159µs (SLO: <20.000µs 📉 -49.2%)

Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%)


✅ rstrip_noaspect

Time: ✅ 0.380µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 37.120MB (SLO: <39.000MB -4.8%)


✅ slice_aspect

Time: ✅ 0.484µs (SLO: <10.000µs 📉 -95.2%)

Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%)


✅ slice_noaspect

Time: ✅ 0.449µs (SLO: <10.000µs 📉 -95.5%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ stringio_aspect

Time: ✅ 2.167µs (SLO: <10.000µs 📉 -78.3%)

Memory: ✅ 37.179MB (SLO: <39.000MB -4.7%)


✅ stringio_noaspect

Time: ✅ 0.722µs (SLO: <10.000µs 📉 -92.8%)

Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%)


✅ strip_aspect

Time: ✅ 10.268µs (SLO: <20.000µs 📉 -48.7%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ strip_noaspect

Time: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ swapcase_aspect

Time: ✅ 2.435µs (SLO: <10.000µs 📉 -75.7%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


✅ swapcase_noaspect

Time: ✅ 0.531µs (SLO: <10.000µs 📉 -94.7%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ title_aspect

Time: ✅ 2.371µs (SLO: <10.000µs 📉 -76.3%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ title_noaspect

Time: ✅ 0.504µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 37.159MB (SLO: <39.000MB -4.7%)


✅ translate_aspect

Time: ✅ 3.389µs (SLO: <10.000µs 📉 -66.1%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ translate_noaspect

Time: ✅ 1.052µs (SLO: <10.000µs 📉 -89.5%)

Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%)


✅ upper_aspect

Time: ✅ 2.272µs (SLO: <10.000µs 📉 -77.3%)

Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%)


✅ upper_noaspect

Time: ✅ 0.372µs (SLO: <10.000µs 📉 -96.3%)

Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%)


🔵 iastaspectsospath - 24/24

🔵 No baseline data available for this suite

✅ ospathbasename_aspect

Time: ✅ 4.047µs (SLO: <10.000µs 📉 -59.5%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ ospathbasename_noaspect

Time: ✅ 1.069µs (SLO: <10.000µs 📉 -89.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ ospathjoin_aspect

Time: ✅ 5.905µs (SLO: <10.000µs 📉 -40.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathjoin_noaspect

Time: ✅ 2.272µs (SLO: <10.000µs 📉 -77.3%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ ospathnormcase_aspect

Time: ✅ 3.325µs (SLO: <10.000µs 📉 -66.8%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ ospathnormcase_noaspect

Time: ✅ 0.567µs (SLO: <10.000µs 📉 -94.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ ospathsplit_aspect

Time: ✅ 4.632µs (SLO: <10.000µs 📉 -53.7%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ ospathsplit_noaspect

Time: ✅ 1.599µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ ospathsplitdrive_aspect

Time: ✅ 3.564µs (SLO: <10.000µs 📉 -64.4%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ ospathsplitdrive_noaspect

Time: ✅ 0.685µs (SLO: <10.000µs 📉 -93.2%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathsplitext_aspect

Time: ✅ 4.394µs (SLO: <10.000µs 📉 -56.1%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathsplitext_noaspect

Time: ✅ 1.379µs (SLO: <10.000µs 📉 -86.2%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


🔵 iastaspectssplit - 12/12

🔵 No baseline data available for this suite

✅ rsplit_aspect

Time: ✅ 1.502µs (SLO: <10.000µs 📉 -85.0%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ rsplit_noaspect

Time: ✅ 0.578µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ split_aspect

Time: ✅ 1.430µs (SLO: <10.000µs 📉 -85.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ split_noaspect

Time: ✅ 0.570µs (SLO: <10.000µs 📉 -94.3%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ splitlines_aspect

Time: ✅ 1.417µs (SLO: <10.000µs 📉 -85.8%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ splitlines_noaspect

Time: ✅ 0.585µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


🔵 iastpropagation - 8/8

🔵 No baseline data available for this suite

✅ no-propagation

Time: ✅ 48.758µs (SLO: <60.000µs 📉 -18.7%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ propagation_enabled

Time: ✅ 143.556µs (SLO: <160.000µs 📉 -10.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ propagation_enabled_100

Time: ✅ 1.563ms (SLO: <1.800ms 📉 -13.2%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ propagation_enabled_1000

Time: ✅ 29.126ms (SLO: <30.550ms -4.7%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


🔵 otelsdkspan - 24/24

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 40.508ms (SLO: <42.000ms -3.6%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ add-link

Time: ✅ 36.479ms (SLO: <38.550ms -5.4%)

Memory: ✅ 34.190MB (SLO: <39.000MB 📉 -12.3%)


✅ add-metrics

Time: ✅ 220.013ms (SLO: <232.000ms -5.2%)

Memory: ✅ 34.092MB (SLO: <39.000MB 📉 -12.6%)


✅ add-tags

Time: ✅ 214.049ms (SLO: <221.600ms -3.4%)

Memory: ✅ 34.131MB (SLO: <39.000MB 📉 -12.5%)


✅ get-context

Time: ✅ 28.923ms (SLO: <31.300ms -7.6%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ is-recording

Time: ✅ 28.944ms (SLO: <31.000ms -6.6%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ record-exception

Time: ✅ 63.219ms (SLO: <65.850ms -4.0%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ set-status

Time: ✅ 31.929ms (SLO: <34.150ms -6.5%)

Memory: ✅ 34.111MB (SLO: <39.000MB 📉 -12.5%)


✅ start

Time: ✅ 28.703ms (SLO: <30.150ms -4.8%)

Memory: ✅ 34.210MB (SLO: <39.000MB 📉 -12.3%)


✅ start-finish

Time: ✅ 33.794ms (SLO: <35.350ms -4.4%)

Memory: ✅ 34.210MB (SLO: <39.000MB 📉 -12.3%)


✅ start-finish-telemetry

Time: ✅ 33.785ms (SLO: <35.450ms -4.7%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ update-name

Time: ✅ 31.015ms (SLO: <33.400ms -7.1%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


🔵 otelspan - 22/22

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 45.394ms (SLO: <47.150ms -3.7%)

Memory: ✅ 44.384MB (SLO: <46.500MB -4.5%)


✅ add-metrics

Time: ✅ 318.647ms (SLO: <344.800ms -7.6%)

Memory: ✅ 552.968MB (SLO: <562.000MB 🟡 -1.6%)


✅ add-tags

Time: ✅ 290.813ms (SLO: <314.000ms -7.4%)

Memory: ✅ 553.869MB (SLO: <563.500MB 🟡 -1.7%)


✅ get-context

Time: ✅ 85.816ms (SLO: <92.350ms -7.1%)

Memory: ✅ 39.559MB (SLO: <46.500MB 📉 -14.9%)


✅ is-recording

Time: ✅ 43.034ms (SLO: <44.500ms -3.3%)

Memory: ✅ 43.794MB (SLO: <46.500MB -5.8%)


✅ record-exception

Time: ✅ 61.916ms (SLO: <67.650ms -8.5%)

Memory: ✅ 39.867MB (SLO: <46.500MB 📉 -14.3%)


✅ set-status

Time: ✅ 48.970ms (SLO: <50.400ms -2.8%)

Memory: ✅ 43.834MB (SLO: <46.500MB -5.7%)


✅ start

Time: ✅ 42.214ms (SLO: <43.450ms -2.8%)

Memory: ✅ 43.818MB (SLO: <46.500MB -5.8%)


✅ start-finish

Time: ✅ 83.056ms (SLO: <88.000ms -5.6%)

Memory: ✅ 33.797MB (SLO: <46.500MB 📉 -27.3%)


✅ start-finish-telemetry

Time: ✅ 84.789ms (SLO: <89.000ms -4.7%)

Memory: ✅ 33.758MB (SLO: <46.500MB 📉 -27.4%)


✅ update-name

Time: ✅ 44.361ms (SLO: <45.150ms 🟡 -1.7%)

Memory: ✅ 44.113MB (SLO: <46.500MB -5.1%)


🔵 packagespackageforrootmodulemapping - 4/4

🔵 No baseline data available for this suite

✅ cache_off

Time: ✅ 339.619ms (SLO: <354.300ms -4.1%)

Memory: ✅ 37.256MB (SLO: <40.000MB -6.9%)


✅ cache_on

Time: ✅ 0.393µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 35.512MB (SLO: <39.000MB -8.9%)


🔵 packagesupdateimporteddependencies - 24/24

🔵 No baseline data available for this suite

✅ import_many

Time: ✅ 154.874µs (SLO: <170.000µs -8.9%)

Memory: ✅ 36.196MB (SLO: <38.500MB -6.0%)


✅ import_many_cached

Time: ✅ 120.789µs (SLO: <130.000µs -7.1%)

Memory: ✅ 36.249MB (SLO: <38.500MB -5.8%)


✅ import_many_stdlib

Time: ✅ 1.616ms (SLO: <1.750ms -7.6%)

Memory: ✅ 36.334MB (SLO: <38.500MB -5.6%)


✅ import_many_stdlib_cached

Time: ✅ 0.962ms (SLO: <1.100ms 📉 -12.5%)

Memory: ✅ 36.282MB (SLO: <38.500MB -5.8%)


✅ import_many_unknown

Time: ✅ 825.042µs (SLO: <890.000µs -7.3%)

Memory: ✅ 36.616MB (SLO: <38.500MB -4.9%)


✅ import_many_unknown_cached

Time: ✅ 807.632µs (SLO: <870.000µs -7.2%)

Memory: ✅ 36.290MB (SLO: <38.500MB -5.7%)


✅ import_one

Time: ✅ 19.860µs (SLO: <30.000µs 📉 -33.8%)

Memory: ✅ 36.046MB (SLO: <39.000MB -7.6%)


✅ import_one_cache

Time: ✅ 6.283µs (SLO: <10.000µs 📉 -37.2%)

Memory: ✅ 36.177MB (SLO: <38.500MB -6.0%)


✅ import_one_stdlib

Time: ✅ 18.825µs (SLO: <20.000µs -5.9%)

Memory: ✅ 36.117MB (SLO: <38.500MB -6.2%)


✅ import_one_stdlib_cache

Time: ✅ 6.248µs (SLO: <10.000µs 📉 -37.5%)

Memory: ✅ 36.092MB (SLO: <38.500MB -6.3%)


✅ import_one_unknown

Time: ✅ 45.370µs (SLO: <50.000µs -9.3%)

Memory: ✅ 36.432MB (SLO: <38.500MB -5.4%)


✅ import_one_unknown_cache

Time: ✅ 6.264µs (SLO: <10.000µs 📉 -37.4%)

Memory: ✅ 36.163MB (SLO: <38.500MB -6.1%)


🔵 ratelimiter - 12/12

🔵 No baseline data available for this suite

✅ defaults

Time: ✅ 2.343µs (SLO: <10.000µs 📉 -76.6%)

Memory: ✅ 31.044MB (SLO: <34.000MB -8.7%)


✅ high_rate_limit

Time: ✅ 2.412µs (SLO: <10.000µs 📉 -75.9%)

Memory: ✅ 30.985MB (SLO: <34.000MB -8.9%)


✅ long_window

Time: ✅ 2.365µs (SLO: <10.000µs 📉 -76.4%)

Memory: ✅ 30.926MB (SLO: <34.000MB -9.0%)


✅ low_rate_limit

Time: ✅ 2.367µs (SLO: <10.000µs 📉 -76.3%)

Memory: ✅ 30.946MB (SLO: <34.000MB -9.0%)


✅ no_rate_limit

Time: ✅ 0.827µs (SLO: <10.000µs 📉 -91.7%)

Memory: ✅ 30.985MB (SLO: <34.000MB -8.9%)


✅ short_window

Time: ✅ 2.482µs (SLO: <10.000µs 📉 -75.2%)

Memory: ✅ 31.005MB (SLO: <34.000MB -8.8%)


🔵 recursivecomputation - 8/8

🔵 No baseline data available for this suite

✅ deep

Time: ✅ 310.874ms (SLO: <320.950ms -3.1%)

Memory: ✅ 32.480MB (SLO: <34.500MB -5.9%)


✅ deep-profiled

Time: ✅ 326.595ms (SLO: <359.150ms -9.1%)

Memory: ✅ 35.075MB (SLO: <39.000MB 📉 -10.1%)


✅ medium

Time: ✅ 7.101ms (SLO: <7.400ms -4.0%)

Memory: ✅ 31.202MB (SLO: <34.000MB -8.2%)


✅ shallow

Time: ✅ 0.960ms (SLO: <1.050ms -8.6%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


🔵 samplingrules - 8/8

🔵 No baseline data available for this suite

✅ average_match

Time: ✅ 276.690µs (SLO: <290.000µs -4.6%)

Memory: ✅ 31.221MB (SLO: <34.000MB -8.2%)


✅ high_match

Time: ✅ 447.193µs (SLO: <480.000µs -6.8%)

Memory: ✅ 31.182MB (SLO: <34.000MB -8.3%)


✅ low_match

Time: ✅ 110.216µs (SLO: <120.000µs -8.2%)

Memory: ✅ 631.852MB (SLO: <700.000MB -9.7%)


✅ very_low_match

Time: ✅ 7.695ms (SLO: <8.500ms -9.5%)

Memory: ✅ 69.518MB (SLO: <75.000MB -7.3%)


🔵 sethttpmeta - 32/32

🔵 No baseline data available for this suite

✅ all-disabled

Time: ✅ 12.287µs (SLO: <20.000µs 📉 -38.6%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ all-enabled

Time: ✅ 42.252µs (SLO: <50.000µs 📉 -15.5%)

Memory: ✅ 31.772MB (SLO: <34.000MB -6.6%)


✅ collectipvariant_exists

Time: ✅ 42.799µs (SLO: <50.000µs 📉 -14.4%)

Memory: ✅ 31.713MB (SLO: <34.000MB -6.7%)


✅ no-collectipvariant

Time: ✅ 42.190µs (SLO: <50.000µs 📉 -15.6%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ no-useragentvariant

Time: ✅ 40.739µs (SLO: <50.000µs 📉 -18.5%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ obfuscation-no-query

Time: ✅ 42.509µs (SLO: <50.000µs 📉 -15.0%)

Memory: ✅ 31.733MB (SLO: <34.000MB -6.7%)


✅ obfuscation-regular-case-explicit-query

Time: ✅ 78.852µs (SLO: <90.000µs 📉 -12.4%)

Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%)


✅ obfuscation-regular-case-implicit-query

Time: ✅ 79.523µs (SLO: <90.000µs 📉 -11.6%)

Memory: ✅ 32.145MB (SLO: <34.000MB -5.5%)


✅ obfuscation-send-querystring-disabled

Time: ✅ 157.105µs (SLO: <170.000µs -7.6%)

Memory: ✅ 32.185MB (SLO: <34.500MB -6.7%)


✅ obfuscation-worst-case-explicit-query

Time: ✅ 151.145µs (SLO: <160.000µs -5.5%)

Memory: ✅ 32.145MB (SLO: <34.500MB -6.8%)


✅ obfuscation-worst-case-implicit-query

Time: ✅ 157.517µs (SLO: <170.000µs -7.3%)

Memory: ✅ 32.165MB (SLO: <34.500MB -6.8%)


✅ useragentvariant_exists_1

Time: ✅ 41.442µs (SLO: <50.000µs 📉 -17.1%)

Memory: ✅ 31.733MB (SLO: <34.000MB -6.7%)


✅ useragentvariant_exists_2

Time: ✅ 42.559µs (SLO: <50.000µs 📉 -14.9%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ useragentvariant_exists_3

Time: ✅ 41.908µs (SLO: <50.000µs 📉 -16.2%)

Memory: ✅ 31.831MB (SLO: <34.000MB -6.4%)


✅ useragentvariant_not_exists_1

Time: ✅ 41.661µs (SLO: <50.000µs 📉 -16.7%)

Memory: ✅ 31.772MB (SLO: <34.000MB -6.6%)


✅ useragentvariant_not_exists_2

Time: ✅ 41.609µs (SLO: <50.000µs 📉 -16.8%)

Memory: ✅ 31.831MB (SLO: <34.000MB -6.4%)


🔵 span - 26/26

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 24.169ms (SLO: <26.200ms -7.8%)

Memory: ✅ 50.779MB (SLO: <53.000MB -4.2%)


✅ add-metrics

Time: ✅ 90.780ms (SLO: <98.350ms -7.7%)

Memory: ✅ 606.526MB (SLO: <961.000MB 📉 -36.9%)


✅ add-tags

Time: ✅ 150.711ms (SLO: <168.550ms 📉 -10.6%)

Memory: ✅ 607.269MB (SLO: <962.500MB 📉 -36.9%)


✅ get-context

Time: ✅ 22.347ms (SLO: <23.700ms -5.7%)

Memory: ✅ 49.631MB (SLO: <53.000MB -6.4%)


✅ is-recording

Time: ✅ 22.748ms (SLO: <23.900ms -4.8%)

Memory: ✅ 49.632MB (SLO: <53.000MB -6.4%)


✅ record-exception

Time: ✅ 42.696ms (SLO: <44.500ms -4.1%)

Memory: ✅ 42.588MB (SLO: <53.000MB 📉 -19.6%)


✅ set-status

Time: ✅ 24.588ms (SLO: <26.000ms -5.4%)

Memory: ✅ 49.665MB (SLO: <53.000MB -6.3%)


✅ start

Time: ✅ 22.315ms (SLO: <23.500ms -5.0%)

Memory: ✅ 49.650MB (SLO: <53.000MB -6.3%)


✅ start-finish

Time: ✅ 51.908ms (SLO: <55.500ms -6.5%)

Memory: ✅ 31.162MB (SLO: <34.000MB -8.3%)


✅ start-finish-telemetry

Time: ✅ 53.167ms (SLO: <58.300ms -8.8%)

Memory: ✅ 31.182MB (SLO: <34.000MB -8.3%)


✅ start-finish-traceid128

Time: ✅ 55.492ms (SLO: <60.050ms -7.6%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ start-traceid128

Time: ✅ 22.766ms (SLO: <24.600ms -7.5%)

Memory: ✅ 49.616MB (SLO: <53.000MB -6.4%)


✅ update-name

Time: ✅ 23.314ms (SLO: <24.100ms -3.3%)

Memory: ✅ 50.331MB (SLO: <53.000MB -5.0%)


🔵 telemetryaddmetric - 30/30

🔵 No baseline data available for this suite

✅ 1-count-metric-1-times

Time: ✅ 3.269µs (SLO: <20.000µs 📉 -83.7%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ 1-count-metrics-100-times

Time: ✅ 221.762µs (SLO: <250.000µs 📉 -11.3%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ 1-distribution-metric-1-times

Time: ✅ 3.002µs (SLO: <20.000µs 📉 -85.0%)

Memory: ✅ 31.339MB (SLO: <34.000MB -7.8%)


✅ 1-distribution-metrics-100-times

Time: ✅ 201.125µs (SLO: <220.000µs -8.6%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ 1-gauge-metric-1-times

Time: ✅ 2.204µs (SLO: <20.000µs 📉 -89.0%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ 1-gauge-metrics-100-times

Time: ✅ 123.908µs (SLO: <150.000µs 📉 -17.4%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ 1-rate-metric-1-times

Time: ✅ 3.284µs (SLO: <20.000µs 📉 -83.6%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ 1-rate-metrics-100-times

Time: ✅ 223.565µs (SLO: <250.000µs 📉 -10.6%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 100-count-metrics-100-times

Time: ✅ 22.158ms (SLO: <23.500ms -5.7%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ 100-distribution-metrics-100-times

Time: ✅ 2.116ms (SLO: <2.250ms -5.9%)

Memory: ✅ 31.418MB (SLO: <34.000MB -7.6%)


✅ 100-gauge-metrics-100-times

Time: ✅ 1.278ms (SLO: <1.550ms 📉 -17.5%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ 100-rate-metrics-100-times

Time: ✅ 2.269ms (SLO: <2.550ms 📉 -11.0%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ flush-1-metric

Time: ✅ 4.317µs (SLO: <20.000µs 📉 -78.4%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ flush-100-metrics

Time: ✅ 184.576µs (SLO: <250.000µs 📉 -26.2%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ flush-1000-metrics

Time: ✅ 2.214ms (SLO: <2.500ms 📉 -11.4%)

Memory: ✅ 32.460MB (SLO: <34.500MB -5.9%)


🔵 tracer - 6/6

🔵 No baseline data available for this suite

✅ large

Time: ✅ 30.375ms (SLO: <32.950ms -7.8%)

Memory: ✅ 32.440MB (SLO: <34.500MB -6.0%)


✅ medium

Time: ✅ 2.987ms (SLO: <3.200ms -6.7%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ small

Time: ✅ 338.653µs (SLO: <370.000µs -8.5%)

Memory: ✅ 31.202MB (SLO: <34.000MB -8.2%)

@christophe-papazian christophe-papazian marked this pull request as ready for review August 25, 2025 07:43
@christophe-papazian christophe-papazian requested review from a team as code owners August 25, 2025 07:43
@christophe-papazian christophe-papazian enabled auto-merge (squash) August 25, 2025 08:23
@christophe-papazian christophe-papazian removed the ASM Application Security Monitoring label Aug 25, 2025
@christophe-papazian christophe-papazian changed the title chore(aap): use forwarded as IP pattern chore(tracer): use forwarded as IP pattern Aug 25, 2025
@christophe-papazian christophe-papazian merged commit 0439e35 into main Aug 25, 2025
693 checks passed
@christophe-papazian christophe-papazian deleted the christophe-papazian/ip_forwarded branch August 25, 2025 13:40
christophe-papazian added a commit that referenced this pull request Aug 27, 2025
Following #14400

This PR improves the support for `forwarded` header by adding ip format
extraction from the forwarded format described in
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Forwarded
https://www.rfc-editor.org/rfc/rfc7239

- We only extract the ip from the `for` parameter.
- Also add tests for different possible ip formats (ipv4, ipv6, quoted
or unquoted, with or without port)

This will also be supported by system tests
DataDog/system-tests#5134

APPSEC-58261

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
APPSEC-58261

Following guidelines on internal document "Client IP addresses
resolution"

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
Following #14400

This PR improves the support for `forwarded` header by adding ip format
extraction from the forwarded format described in
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Forwarded
https://www.rfc-editor.org/rfc/rfc7239

- We only extract the ip from the `for` parameter.
- Also add tests for different possible ip formats (ipv4, ipv6, quoted
or unquoted, with or without port)

This will also be supported by system tests
DataDog/system-tests#5134

APPSEC-58261

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
erikayasuda pushed a commit that referenced this pull request Sep 3, 2025
APPSEC-58261

Following guidelines on internal document "Client IP addresses
resolution"

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
erikayasuda pushed a commit that referenced this pull request Sep 3, 2025
Following #14400

This PR improves the support for `forwarded` header by adding ip format
extraction from the forwarded format described in
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Forwarded
https://www.rfc-editor.org/rfc/rfc7239

- We only extract the ip from the `for` parameter.
- Also add tests for different possible ip formats (ipv4, ipv6, quoted
or unquoted, with or without port)

This will also be supported by system tests
DataDog/system-tests#5134

APPSEC-58261

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants