Skip to content

fix(iast): gevent lazy timeouts #14062

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

Open
wants to merge 36 commits into
base: main
Choose a base branch
from

Conversation

avara1986
Copy link
Member

@avara1986 avara1986 commented Jul 18, 2025

Gevent Worker Timeouts with Gunicorn and IAST

We identified an issue where applications using Gunicorn with the Gevent worker class may experience random worker timeouts, particularly during shutdown sequences. A typical command setup might look like:

gunicorn -w 1 --threads 1 -b 0.0.0.0:7777 -k gevent app:app

After extensive testing, we found the issue occurs sporadically in a specific scenario: when endpoint A in the application sends an internal HTTP request to endpoint B using urllib3, as shown below:

http_poolmanager = urllib3.PoolManager(num_pools=1)
response = http_poolmanager.request("GET", "http://localhost:8050/returnheaders")

And later, when calling a /shutdown endpoint to force the tracer to flush spans before exit:

@app.route("/shutdown", methods=["GET"])
def shutdown_view():
    tracer.shutdown()
    return "OK"

Occasionally, this results in a worker timeout, and the trace spans are never sent:

[2025-07-17 13:24:16 +0200] [218095] [DEBUG] GET /shutdown
Shutting down tracer with 4 unfinished spans. Unfinished spans will not be sent to Datadog:
trace_id=1 parent_id=1 span_id=15892328500422422139 name=flask.request resource=GET /shutdown ...
[2025-07-17 13:24:47 +0200] [218086] [CRITICAL] WORKER TIMEOUT (pid:218095)

Root Cause: Gevent, Greenlets, and Runtime Instrumentation

This problem is related to how IAST (Interactive Application Security Testing) performs runtime code instrumentation.

Like other features such as Profiling, IAST rewrites Python code dynamically and must be initialized as early as possible. This is because Gevent uses greenlets—lightweight coroutines that run in a shared OS thread—for concurrency.

If any blocking operation (such as time.sleep() or a blocking import) occurs before gevent.monkey.patch_all() has a chance to replace those blocking operations with non-blocking equivalents, the entire event loop can hang, causing Gunicorn to kill the worker.


✅ Solution: Early Initialization via sitecustomize

To resolve this, IAST initialization has been moved to the sitecustomize preload hook, ensuring that instrumentation runs before any blocking imports can interfere:

import ddtrace.bootstrap.preload as preload  # Perform the actual initialization

cleanup_loaded_modules()

This guarantees that any modules loaded during IAST setup are cleaned up properly, allowing gevent.monkey.patch_all() to take full effect without blocking side-effects.

Additional Fix: Avoid Late Imports from C Extensions

We also updated a line in the native C code that previously triggered a delayed import:

PyImport_ImportModule("importlib.metadata");

This usage caused importlib.metadata.packages_distributions to be lazily loaded in a way that could not be released or patched properly by Gevent, leading to sporadic blocking and timeouts.

To address this, we refactored the C module to expose a function set_packages_distributions_func, which is now explicitly set from Python space. This gives us better control over when and how importlib.metadata is imported, ensuring compatibility with Gevent’s concurrency model.

Additional Fix: Simplifying Taint Sink Initialization in IAST

Finally, these changes also prompted a review of how IAST taint sinks were being loaded. Previously, we relied on a legacy pattern where all taint sink patches were triggered only when hashlib was imported, using the following logic:

when_imported("hashlib")(_on_import_factory(module, "ddtrace.appsec._iast.taint_sinks.%s", raise_errors=False))

This design had a major drawback: if hashlib was never imported, no taint sinks were initialized. With our new preload strategy, this lazy trigger mechanism becomes unreliable and may silently fail to initialize critical instrumentation.

However, this mechanism is no longer necessary. Each taint sink module already defines its own lazy instrumentation logic using ModuleWatchdog, like so:

@ModuleWatchdog.after_module_imported(module_name)
def _(module):
    try:
        wrap_object(module, name, FunctionWrapper, (wrapper,))
    except (ImportError, AttributeError):
        log.debug("Module %s.%s does not exist", module_name, name)

Since this approach watches for individual modules (e.g. os, subprocess, etc.) and applies patches independently as they are imported, there's no longer a need to defer sink initialization via a central import like hashlib.

Therefore, we’ve removed the old when_imported("hashlib")(...) setup and now invoke each taint sink’s patch function directly at startup, ensuring:

  • All sinks are registered proactively
  • Lazy wrapping still occurs safely as modules are imported
  • There’s no longer an indirect dependency on unrelated module imports

This results in a more robust and predictable IAST behavior across all use cases.

Summary

  • Gevent requires monkey patching to avoid blocking operations on the main thread.

  • IAST’s dynamic code instrumentation was interfering with this when not initialized early enough.

  • We fixed the issue by:

    • Moving IAST initialization to sitecustomize preload hooks.
    • Cleaning up loaded modules post-instrumentation.
    • Refactoring native code to avoid late, uncontrolled imports.

This change improves stability and prevents data loss caused by worker timeouts during shutdown.


you’ll notice there are several TODOs documenting broken interactions — and, in many cases, the tests hang indefinitely, just like what happens in APPSEC-58276.

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

@avara1986 avara1986 added changelog/no-changelog A changelog entry is not required for this PR. ASM Application Security Monitoring labels Jul 18, 2025
Copy link
Contributor

github-actions bot commented Jul 18, 2025

CODEOWNERS have been resolved as:

ddtrace/appsec/_iast/auto.py                                            @DataDog/asm-python
releasenotes/notes/iast-fix-gevent-0cdc996892bb59c2.yaml                @DataDog/apm-python
tests/appsec/iast/taint_tracking/test_native_taint_range_fork.py        @DataDog/asm-python
tests/appsec/iast/taint_tracking/test_native_taint_range_gevent_fork.py  @DataDog/asm-python
.riot/requirements/109d1ad.txt                                          @DataDog/apm-python
.riot/requirements/1421f4d.txt                                          @DataDog/apm-python
.riot/requirements/19a745b.txt                                          @DataDog/apm-python
.riot/requirements/1c51432.txt                                          @DataDog/apm-python
.riot/requirements/1d81907.txt                                          @DataDog/apm-python
.riot/requirements/551fe5d.txt                                          @DataDog/apm-python
ddtrace/_monkey.py                                                      @DataDog/apm-core-python
ddtrace/appsec/_constants.py                                            @DataDog/asm-python
ddtrace/appsec/_iast/__init__.py                                        @DataDog/asm-python
ddtrace/appsec/_iast/_ast/ast_patching.py                               @DataDog/asm-python
ddtrace/appsec/_iast/_ast/iastpatch.c                                   @DataDog/asm-python
ddtrace/appsec/_iast/_ast/iastpatch.pyi                                 @DataDog/asm-python
ddtrace/appsec/_iast/main.py                                            @DataDog/asm-python
ddtrace/appsec/_iast/taint_sinks/command_injection.py                   @DataDog/asm-python
ddtrace/bootstrap/preload.py                                            @DataDog/apm-core-python
ddtrace/internal/iast/product.py                                        @DataDog/asm-python
ddtrace/settings/asm.py                                                 @DataDog/asm-python
riotfile.py                                                             @DataDog/apm-python
tests/appsec/app.py                                                     @DataDog/asm-python
tests/appsec/appsec_utils.py                                            @DataDog/asm-python
tests/appsec/iast/fixtures/entrypoint/views.py                          @DataDog/asm-python
tests/appsec/iast/iast_utils.py                                         @DataDog/asm-python
tests/appsec/integrations/flask_tests/test_flask_remoteconfig.py        @DataDog/asm-python
tests/appsec/integrations/flask_tests/test_iast_flask_entrypoint_iast_patches.py  @DataDog/asm-python
tests/appsec/integrations/flask_tests/test_iast_flask_testagent.py      @DataDog/asm-python
.riot/requirements/10cc08e.txt                                          @DataDog/apm-python
.riot/requirements/116d4eb.txt                                          @DataDog/apm-python
.riot/requirements/1390092.txt                                          @DataDog/apm-python
.riot/requirements/17140b3.txt                                          @DataDog/apm-python
.riot/requirements/172eb93.txt                                          @DataDog/apm-python
.riot/requirements/1a5499d.txt                                          @DataDog/apm-python
.riot/requirements/1b60b14.txt                                          @DataDog/apm-python
.riot/requirements/1c1038e.txt                                          @DataDog/apm-python
.riot/requirements/1d3e1f4.txt                                          @DataDog/apm-python
.riot/requirements/1f31585.txt                                          @DataDog/apm-python
.riot/requirements/31c8ec9.txt                                          @DataDog/apm-python
.riot/requirements/43ff7ef.txt                                          @DataDog/apm-python
.riot/requirements/5b9ebd4.txt                                          @DataDog/apm-python
.riot/requirements/825ba8f.txt                                          @DataDog/apm-python
.riot/requirements/c1266ce.txt                                          @DataDog/apm-python
.riot/requirements/c34a6a8.txt                                          @DataDog/apm-python
.riot/requirements/e9ec450.txt                                          @DataDog/apm-python
tests/appsec/iast/fixtures/entrypoint/app_create_app_patch_auto.py      @DataDog/asm-python

Copy link
Contributor

github-actions bot commented Jul 18, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 281 ± 4 ms.

The average import time from base is: 288 ± 5 ms.

The import time difference between this PR and base is: -7.3 ± 0.2 ms.

Import time breakdown

The following import paths have shrunk:

ddtrace.auto 3.603 ms (1.28%)
ddtrace.bootstrap.sitecustomize 2.344 ms (0.83%)
ddtrace.bootstrap.preload 2.074 ms (0.74%)
ddtrace.internal.remoteconfig.client 0.776 ms (0.28%)
multiprocessing.sharedctypes 0.172 ms (0.06%)
multiprocessing.heap 0.172 ms (0.06%)
mmap 0.172 ms (0.06%)
ddtrace.internal.products 0.147 ms (0.05%)
importlib.metadata 0.147 ms (0.05%)
zipfile 0.147 ms (0.05%)
zipfile._path 0.147 ms (0.05%)
ddtrace.appsec._common_module_patches 0.151 ms (0.05%)
ddtrace.appsec._asm_request_context 0.151 ms (0.05%)
ddtrace.appsec._utils 0.151 ms (0.05%)
ddtrace._trace.trace_handlers 0.119 ms (0.04%)
ddtrace._trace._inferred_proxy 0.067 ms (0.02%)
ddtrace.propagation.http 0.067 ms (0.02%)
ddtrace 1.259 ms (0.45%)
ddtrace._logger 0.303 ms (0.11%)
ddtrace.internal.telemetry 0.303 ms (0.11%)
ddtrace.settings._agent 0.175 ms (0.06%)
ddtrace.settings 0.127 ms (0.05%)
ddtrace.settings.http 0.127 ms (0.05%)
ddtrace.internal.utils.cache 0.127 ms (0.05%)
inspect 0.127 ms (0.05%)
socket 0.048 ms (0.02%)
_socket 0.048 ms (0.02%)
ddtrace.internal.telemetry.writer 0.128 ms (0.05%)
http.client 0.128 ms (0.05%)
email.parser 0.128 ms (0.05%)
email.feedparser 0.128 ms (0.05%)
email._policybase 0.128 ms (0.05%)
email.header 0.128 ms (0.05%)
email.charset 0.128 ms (0.05%)
ddtrace.settings._config 0.151 ms (0.05%)
ddtrace.internal.gitmetadata 0.151 ms (0.05%)
ddtrace.ext.ci 0.151 ms (0.05%)
ddtrace.ext.git 0.151 ms (0.05%)
tempfile 0.151 ms (0.05%)
ddtrace.internal._unpatched 0.142 ms (0.05%)
subprocess 0.107 ms (0.04%)
contextlib 0.107 ms (0.04%)
json 0.035 ms (0.01%)
json.decoder 0.035 ms (0.01%)
re 0.035 ms (0.01%)
enum 0.035 ms (0.01%)
types 0.035 ms (0.01%)

@pr-commenter
Copy link

pr-commenter bot commented Jul 18, 2025

Performance SLOs

Benchmark execution time: 2025-07-24 20:20:01

Comparing candidate commit 4feadb9 in branch avara1986/APPSEC-58276_iast_standalone with performance thresholds.

Performance Test Results

Legend: ✅ Pass | ⚠️ Unstable | ❌ Fail

⚠️ coreapiscenario - 12/12 (2 unstable)

⚠️ context_with_data_listeners

Metric Status Value SLO % Under SLO
execution_time ⚠️ 13.909µs < 20.000µs +30.5%
max_rss_usage 29.078MB < 31.000MB +6.2%

✅ context_with_data_no_listeners

Metric Status Value SLO % Under SLO
execution_time 3.796µs < 10.000µs +62.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

⚠️ context_with_data_only_all_listeners

Metric Status Value SLO % Under SLO
execution_time ⚠️ 13.804µs < 20.000µs +31.0%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ get_item_exists

Metric Status Value SLO % Under SLO
execution_time 630.862ns < 10.000µs +93.7%
max_rss_usage 29.059MB < 31.000MB +6.3%

✅ get_item_missing

Metric Status Value SLO % Under SLO
execution_time 687.353ns < 10.000µs +93.1%
max_rss_usage 29.059MB < 31.000MB +6.3%

✅ set_item

Metric Status Value SLO % Under SLO
execution_time 24.693µs < 30.000µs +17.7%
max_rss_usage 29.138MB < 31.000MB +6.0%
djangosimple - 22/22

✅ appsec

Metric Status Value SLO % Under SLO
execution_time 21.358ms < 22.300ms +4.2%
max_rss_usage 64.094MB < 65.500MB +2.1%

✅ exception-replay-enabled

Metric Status Value SLO % Under SLO
execution_time 1.351ms < 1.450ms +6.8%
max_rss_usage 63.465MB < 65.500MB +3.1%

✅ iast

Metric Status Value SLO % Under SLO
execution_time 21.310ms < 22.250ms +4.2%
max_rss_usage 64.075MB < 65.500MB +2.2%

✅ profiler

Metric Status Value SLO % Under SLO
execution_time 15.873ms < 16.550ms +4.1%
max_rss_usage 50.871MB < 53.000MB +4.0%

✅ span-code-origin

Metric Status Value SLO % Under SLO
execution_time 27.011ms < 28.200ms +4.2%
max_rss_usage 66.279MB < 68.000MB +2.5%

✅ tracer

Metric Status Value SLO % Under SLO
execution_time 21.432ms < 22.700ms +5.6%
max_rss_usage 64.133MB < 65.500MB +2.1%

✅ tracer-and-profiler

Metric Status Value SLO % Under SLO
execution_time 23.928ms < 24.900ms +3.9%
max_rss_usage 65.058MB < 67.000MB +2.9%

✅ tracer-no-caches

Metric Status Value SLO % Under SLO
execution_time 18.890ms < 19.650ms +3.9%
max_rss_usage 63.721MB < 65.500MB +2.7%

✅ tracer-no-databases

Metric Status Value SLO % Under SLO
execution_time 19.206ms < 20.100ms +4.5%
max_rss_usage 63.701MB < 65.500MB +2.7%

✅ tracer-no-middleware

Metric Status Value SLO % Under SLO
execution_time 21.132ms < 22.500ms +6.1%
max_rss_usage 64.114MB < 65.500MB +2.1%

✅ tracer-no-templates

Metric Status Value SLO % Under SLO
execution_time 21.132ms < 22.250ms +5.0%
max_rss_usage 64.094MB < 65.500MB +2.1%
errortrackingdjangosimple - 6/6

✅ errortracking-enabled-all

Metric Status Value SLO % Under SLO
execution_time 18.599ms < 19.850ms +6.3%
max_rss_usage 63.721MB < 65.500MB +2.7%

✅ errortracking-enabled-user

Metric Status Value SLO % Under SLO
execution_time 18.666ms < 19.400ms +3.8%
max_rss_usage 63.721MB < 65.500MB +2.7%

✅ tracer-enabled

Metric Status Value SLO % Under SLO
execution_time 18.559ms < 19.450ms +4.6%
max_rss_usage 63.740MB < 65.500MB +2.7%
errortrackingflasksqli - 6/6

✅ errortracking-enabled-all

Metric Status Value SLO % Under SLO
execution_time 2.119ms < 2.300ms +7.9%
max_rss_usage 51.630MB < 53.000MB +2.6%

✅ errortracking-enabled-user

Metric Status Value SLO % Under SLO
execution_time 2.117ms < 2.250ms +5.9%
max_rss_usage 51.668MB < 53.000MB +2.5%

✅ tracer-enabled

Metric Status Value SLO % Under SLO
execution_time 2.117ms < 2.300ms +7.9%
max_rss_usage 51.138MB < 53.000MB +3.5%
flasksimple - 14/14

✅ appsec-get

Metric Status Value SLO % Under SLO
execution_time 4.613ms < 4.750ms +2.9%
max_rss_usage 63.390MB < 64.000MB +1.0%

✅ appsec-post

Metric Status Value SLO % Under SLO
execution_time 6.616ms < 6.750ms +2.0%
max_rss_usage 63.370MB < 64.000MB +1.0%

✅ appsec-telemetry

Metric Status Value SLO % Under SLO
execution_time 4.600ms < 4.750ms +3.2%
max_rss_usage 63.334MB < 64.000MB +1.0%

✅ debugger

Metric Status Value SLO % Under SLO
execution_time 1.859ms < 2.000ms +7.1%
max_rss_usage 42.039MB < 44.000MB +4.5%

✅ iast-get

Metric Status Value SLO % Under SLO
execution_time 1.856ms < 2.000ms +7.2%
max_rss_usage 44.502MB < 45.000MB +1.1%

✅ profiler

Metric Status Value SLO % Under SLO
execution_time 1.984ms < 2.100ms +5.5%
max_rss_usage 43.552MB < 44.000MB +1.0%

✅ tracer

Metric Status Value SLO % Under SLO
execution_time 3.386ms < 3.650ms +7.2%
max_rss_usage 51.753MB < 53.000MB +2.4%
flasksqli - 6/6

✅ appsec-enabled

Metric Status Value SLO % Under SLO
execution_time 3.968ms < 4.200ms +5.5%
max_rss_usage 63.484MB < 66.000MB +3.8%

✅ iast-enabled

Metric Status Value SLO % Under SLO
execution_time 2.562ms < 2.800ms +8.5%
max_rss_usage 56.565MB < 58.000MB +2.5%

✅ tracer-enabled

Metric Status Value SLO % Under SLO
execution_time 2.107ms < 2.250ms +6.4%
max_rss_usage 51.197MB < 53.000MB +3.4%
httppropagationextract - 60/60

✅ all_styles_all_headers

Metric Status Value SLO % Under SLO
execution_time 82.828µs < 100.000µs +17.2%
max_rss_usage 29.039MB < 31.000MB +6.3%

✅ b3_headers

Metric Status Value SLO % Under SLO
execution_time 14.175µs < 20.000µs +29.1%
max_rss_usage 29.197MB < 31.000MB +5.8%

✅ b3_single_headers

Metric Status Value SLO % Under SLO
execution_time 13.457µs < 20.000µs +32.7%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Metric Status Value SLO % Under SLO
execution_time 65.127µs < 80.000µs +18.6%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Metric Status Value SLO % Under SLO
execution_time 67.355µs < 80.000µs +15.8%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ empty_headers

Metric Status Value SLO % Under SLO
execution_time 1.603µs < 10.000µs +84.0%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ full_t_id_datadog_headers

Metric Status Value SLO % Under SLO
execution_time 23.909µs < 30.000µs +20.3%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ invalid_priority_header

Metric Status Value SLO % Under SLO
execution_time 6.610µs < 10.000µs +33.9%
max_rss_usage 29.138MB < 31.000MB +6.0%

✅ invalid_span_id_header

Metric Status Value SLO % Under SLO
execution_time 6.507µs < 10.000µs +34.9%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ invalid_tags_header

Metric Status Value SLO % Under SLO
execution_time 6.559µs < 10.000µs +34.4%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ invalid_trace_id_header

Metric Status Value SLO % Under SLO
execution_time 6.480µs < 10.000µs +35.2%
max_rss_usage 29.117MB < 31.000MB +6.1%

✅ large_header_no_matches

Metric Status Value SLO % Under SLO
execution_time 27.553µs < 30.000µs +8.2%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ large_valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 28.703µs < 40.000µs +28.2%
max_rss_usage 29.078MB < 31.000MB +6.2%

✅ medium_header_no_matches

Metric Status Value SLO % Under SLO
execution_time 9.876µs < 20.000µs +50.6%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ medium_valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 11.260µs < 20.000µs +43.7%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ none_propagation_style

Metric Status Value SLO % Under SLO
execution_time 1.693µs < 10.000µs +83.1%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ tracecontext_headers

Metric Status Value SLO % Under SLO
execution_time 34.793µs < 40.000µs +13.0%
max_rss_usage 29.117MB < 31.000MB +6.1%

✅ valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 6.597µs < 10.000µs +34.0%
max_rss_usage 29.138MB < 31.000MB +6.0%

✅ valid_headers_basic

Metric Status Value SLO % Under SLO
execution_time 6.152µs < 10.000µs +38.5%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ wsgi_empty_headers

Metric Status Value SLO % Under SLO
execution_time 1.598µs < 10.000µs +84.0%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ wsgi_invalid_priority_header

Metric Status Value SLO % Under SLO
execution_time 6.623µs < 10.000µs +33.8%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ wsgi_invalid_span_id_header

Metric Status Value SLO % Under SLO
execution_time 1.590µs < 10.000µs +84.1%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ wsgi_invalid_tags_header

Metric Status Value SLO % Under SLO
execution_time 6.595µs < 10.000µs +34.1%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ wsgi_invalid_trace_id_header

Metric Status Value SLO % Under SLO
execution_time 6.591µs < 10.000µs +34.1%
max_rss_usage 29.059MB < 31.000MB +6.3%

✅ wsgi_large_header_no_matches

Metric Status Value SLO % Under SLO
execution_time 28.762µs < 40.000µs +28.1%
max_rss_usage 29.177MB < 31.000MB +5.9%

✅ wsgi_large_valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 29.967µs < 40.000µs +25.1%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ wsgi_medium_header_no_matches

Metric Status Value SLO % Under SLO
execution_time 10.133µs < 20.000µs +49.3%
max_rss_usage 29.138MB < 31.000MB +6.0%

✅ wsgi_medium_valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 11.527µs < 20.000µs +42.4%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ wsgi_valid_headers_all

Metric Status Value SLO % Under SLO
execution_time 6.516µs < 10.000µs +34.8%
max_rss_usage 29.138MB < 31.000MB +6.0%

✅ wsgi_valid_headers_basic

Metric Status Value SLO % Under SLO
execution_time 6.090µs < 10.000µs +39.1%
max_rss_usage 29.137MB < 31.000MB +6.0%
httppropagationinject - 16/16

✅ ids_only

Metric Status Value SLO % Under SLO
execution_time 20.215µs < 30.000µs +32.6%
max_rss_usage 29.177MB < 31.000MB +5.9%

✅ with_all

Metric Status Value SLO % Under SLO
execution_time 34.891µs < 40.000µs +12.8%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ with_dd_origin

Metric Status Value SLO % Under SLO
execution_time 26.629µs < 30.000µs +11.2%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ with_priority_and_origin

Metric Status Value SLO % Under SLO
execution_time 29.862µs < 40.000µs +25.3%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ with_sampling_priority

Metric Status Value SLO % Under SLO
execution_time 22.627µs < 30.000µs +24.6%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ with_tags

Metric Status Value SLO % Under SLO
execution_time 28.292µs < 40.000µs +29.3%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ with_tags_invalid

Metric Status Value SLO % Under SLO
execution_time 31.268µs < 40.000µs +21.8%
max_rss_usage 29.078MB < 31.000MB +6.2%

✅ with_tags_max_size

Metric Status Value SLO % Under SLO
execution_time 29.611µs < 40.000µs +26.0%
max_rss_usage 29.117MB < 31.000MB +6.1%
iast_aspects - 40/40

✅ re_expand_aspect

Metric Status Value SLO % Under SLO
execution_time 33.079µs < 40.000µs +17.3%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_expand_noaspect

Metric Status Value SLO % Under SLO
execution_time 28.291µs < 40.000µs +29.3%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_findall_aspect

Metric Status Value SLO % Under SLO
execution_time 3.687µs < 10.000µs +63.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_findall_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.424µs < 10.000µs +85.8%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ re_finditer_aspect

Metric Status Value SLO % Under SLO
execution_time 5.176µs < 10.000µs +48.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_finditer_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.417µs < 10.000µs +85.8%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ re_fullmatch_aspect

Metric Status Value SLO % Under SLO
execution_time 3.396µs < 10.000µs +66.0%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_fullmatch_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.278µs < 10.000µs +87.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_group_aspect

Metric Status Value SLO % Under SLO
execution_time 3.442µs < 10.000µs +65.6%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ re_group_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.603µs < 10.000µs +84.0%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ re_groups_aspect

Metric Status Value SLO % Under SLO
execution_time 3.595µs < 10.000µs +64.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_groups_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.688µs < 10.000µs +83.1%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ re_match_aspect

Metric Status Value SLO % Under SLO
execution_time 3.425µs < 10.000µs +65.8%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ re_match_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.303µs < 10.000µs +87.0%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_search_aspect

Metric Status Value SLO % Under SLO
execution_time 3.306µs < 10.000µs +66.9%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_search_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.190µs < 10.000µs +88.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ re_sub_aspect

Metric Status Value SLO % Under SLO
execution_time 4.667µs < 10.000µs +53.3%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ re_sub_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.534µs < 10.000µs +84.7%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ re_subn_aspect

Metric Status Value SLO % Under SLO
execution_time 4.887µs < 10.000µs +51.1%
max_rss_usage 34.642MB < 35.500MB +2.4%

✅ re_subn_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.631µs < 10.000µs +83.7%
max_rss_usage 34.642MB < 35.000MB +1.0%
iastaspects - 118/118

✅ add_aspect

Metric Status Value SLO % Under SLO
execution_time 327.551ns < 10.000µs +96.7%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ add_inplace_aspect

Metric Status Value SLO % Under SLO
execution_time 336.284ns < 10.000µs +96.6%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ add_inplace_noaspect

Metric Status Value SLO % Under SLO
execution_time 317.591ns < 10.000µs +96.8%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ add_noaspect

Metric Status Value SLO % Under SLO
execution_time 275.606ns < 10.000µs +97.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ bytearray_aspect

Metric Status Value SLO % Under SLO
execution_time 1.857µs < 10.000µs +81.4%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ bytearray_extend_aspect

Metric Status Value SLO % Under SLO
execution_time 1.383µs < 10.000µs +86.2%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ bytearray_extend_noaspect

Metric Status Value SLO % Under SLO
execution_time 610.979ns < 10.000µs +93.9%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ bytearray_noaspect

Metric Status Value SLO % Under SLO
execution_time 476.687ns < 10.000µs +95.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ bytes_aspect

Metric Status Value SLO % Under SLO
execution_time 1.856µs < 10.000µs +81.4%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ bytes_noaspect

Metric Status Value SLO % Under SLO
execution_time 492.112ns < 10.000µs +95.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ bytesio_aspect

Metric Status Value SLO % Under SLO
execution_time 1.879µs < 10.000µs +81.2%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ bytesio_noaspect

Metric Status Value SLO % Under SLO
execution_time 495.019ns < 10.000µs +95.0%
max_rss_usage 34.701MB < 35.000MB +0.9%

✅ capitalize_aspect

Metric Status Value SLO % Under SLO
execution_time 737.603ns < 10.000µs +92.6%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ capitalize_noaspect

Metric Status Value SLO % Under SLO
execution_time 432.385ns < 10.000µs +95.7%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ casefold_aspect

Metric Status Value SLO % Under SLO
execution_time 734.311ns < 10.000µs +92.7%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ casefold_noaspect

Metric Status Value SLO % Under SLO
execution_time 367.166ns < 10.000µs +96.3%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ decode_aspect

Metric Status Value SLO % Under SLO
execution_time 722.729ns < 10.000µs +92.8%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ decode_noaspect

Metric Status Value SLO % Under SLO
execution_time 414.316ns < 10.000µs +95.9%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ encode_aspect

Metric Status Value SLO % Under SLO
execution_time 706.312ns < 10.000µs +92.9%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ encode_noaspect

Metric Status Value SLO % Under SLO
execution_time 406.938ns < 10.000µs +95.9%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ format_aspect

Metric Status Value SLO % Under SLO
execution_time 3.533µs < 10.000µs +64.7%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ format_map_aspect

Metric Status Value SLO % Under SLO
execution_time 3.235µs < 10.000µs +67.7%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ format_map_noaspect

Metric Status Value SLO % Under SLO
execution_time 776.622ns < 10.000µs +92.2%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ format_noaspect

Metric Status Value SLO % Under SLO
execution_time 596.772ns < 10.000µs +94.0%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ index_aspect

Metric Status Value SLO % Under SLO
execution_time 344.043ns < 10.000µs +96.6%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ index_noaspect

Metric Status Value SLO % Under SLO
execution_time 276.576ns < 10.000µs +97.2%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ join_aspect

Metric Status Value SLO % Under SLO
execution_time 1.226µs < 10.000µs +87.7%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ join_noaspect

Metric Status Value SLO % Under SLO
execution_time 489.275ns < 10.000µs +95.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ ljust_aspect

Metric Status Value SLO % Under SLO
execution_time 10.277µs < 20.000µs +48.6%
max_rss_usage 34.740MB < 35.500MB +2.1%

✅ ljust_noaspect

Metric Status Value SLO % Under SLO
execution_time 406.096ns < 10.000µs +95.9%
max_rss_usage 34.642MB < 35.500MB +2.4%

✅ lower_aspect

Metric Status Value SLO % Under SLO
execution_time 2.245µs < 10.000µs +77.5%
max_rss_usage 34.642MB < 35.500MB +2.4%

✅ lower_noaspect

Metric Status Value SLO % Under SLO
execution_time 366.467ns < 10.000µs +96.3%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ lstrip_aspect

Metric Status Value SLO % Under SLO
execution_time 10.992µs < 20.000µs +45.0%
max_rss_usage 34.721MB < 35.500MB +2.2%

✅ lstrip_noaspect

Metric Status Value SLO % Under SLO
execution_time 380.619ns < 10.000µs +96.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ modulo_aspect

Metric Status Value SLO % Under SLO
execution_time 589.572ns < 10.000µs +94.1%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ modulo_aspect_for_bytearray_bytearray

Metric Status Value SLO % Under SLO
execution_time 1.272µs < 10.000µs +87.3%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ modulo_aspect_for_bytes

Metric Status Value SLO % Under SLO
execution_time 749.853ns < 10.000µs +92.5%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ modulo_aspect_for_bytes_bytearray

Metric Status Value SLO % Under SLO
execution_time 988.524ns < 10.000µs +90.1%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ modulo_noaspect

Metric Status Value SLO % Under SLO
execution_time 630.942ns < 10.000µs +93.7%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ replace_aspect

Metric Status Value SLO % Under SLO
execution_time 4.672µs < 10.000µs +53.3%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ replace_noaspect

Metric Status Value SLO % Under SLO
execution_time 459.800ns < 10.000µs +95.4%
max_rss_usage 34.623MB < 35.500MB +2.5%

✅ repr_aspect

Metric Status Value SLO % Under SLO
execution_time 912.767ns < 10.000µs +90.9%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ repr_noaspect

Metric Status Value SLO % Under SLO
execution_time 419.842ns < 10.000µs +95.8%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ rstrip_aspect

Metric Status Value SLO % Under SLO
execution_time 10.212µs < 20.000µs +48.9%
max_rss_usage 34.800MB < 35.500MB +2.0%

✅ rstrip_noaspect

Metric Status Value SLO % Under SLO
execution_time 375.872ns < 10.000µs +96.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ slice_aspect

Metric Status Value SLO % Under SLO
execution_time 482.334ns < 10.000µs +95.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ slice_noaspect

Metric Status Value SLO % Under SLO
execution_time 443.096ns < 10.000µs +95.6%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ stringio_aspect

Metric Status Value SLO % Under SLO
execution_time 2.220µs < 10.000µs +77.8%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ stringio_noaspect

Metric Status Value SLO % Under SLO
execution_time 713.811ns < 10.000µs +92.9%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ strip_aspect

Metric Status Value SLO % Under SLO
execution_time 10.289µs < 20.000µs +48.6%
max_rss_usage 34.780MB < 35.500MB +2.0%

✅ strip_noaspect

Metric Status Value SLO % Under SLO
execution_time 382.894ns < 10.000µs +96.2%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ swapcase_aspect

Metric Status Value SLO % Under SLO
execution_time 2.459µs < 10.000µs +75.4%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ swapcase_noaspect

Metric Status Value SLO % Under SLO
execution_time 532.205ns < 10.000µs +94.7%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ title_aspect

Metric Status Value SLO % Under SLO
execution_time 2.413µs < 10.000µs +75.9%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ title_noaspect

Metric Status Value SLO % Under SLO
execution_time 499.519ns < 10.000µs +95.0%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ translate_aspect

Metric Status Value SLO % Under SLO
execution_time 3.289µs < 10.000µs +67.1%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ translate_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.042µs < 10.000µs +89.6%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ upper_aspect

Metric Status Value SLO % Under SLO
execution_time 2.341µs < 10.000µs +76.6%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ upper_noaspect

Metric Status Value SLO % Under SLO
execution_time 362.853ns < 10.000µs +96.4%
max_rss_usage 34.623MB < 35.000MB +1.1%
iastaspectsospath - 24/24

✅ ospathbasename_aspect

Metric Status Value SLO % Under SLO
execution_time 4.207µs < 10.000µs +57.9%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ ospathbasename_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.079µs < 10.000µs +89.2%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ ospathjoin_aspect

Metric Status Value SLO % Under SLO
execution_time 6.046µs < 10.000µs +39.5%
max_rss_usage 34.681MB < 35.000MB +0.9%

✅ ospathjoin_noaspect

Metric Status Value SLO % Under SLO
execution_time 2.307µs < 10.000µs +76.9%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ ospathnormcase_aspect

Metric Status Value SLO % Under SLO
execution_time 3.494µs < 10.000µs +65.1%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ ospathnormcase_noaspect

Metric Status Value SLO % Under SLO
execution_time 566.124ns < 10.000µs +94.3%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ ospathsplit_aspect

Metric Status Value SLO % Under SLO
execution_time 4.731µs < 10.000µs +52.7%
max_rss_usage 34.662MB < 35.000MB +1.0%

✅ ospathsplit_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.591µs < 10.000µs +84.1%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ ospathsplitdrive_aspect

Metric Status Value SLO % Under SLO
execution_time 3.656µs < 10.000µs +63.4%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ ospathsplitdrive_noaspect

Metric Status Value SLO % Under SLO
execution_time 694.548ns < 10.000µs +93.1%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ ospathsplitext_aspect

Metric Status Value SLO % Under SLO
execution_time 5.367µs < 10.000µs +46.3%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ ospathsplitext_noaspect

Metric Status Value SLO % Under SLO
execution_time 1.378µs < 10.000µs +86.2%
max_rss_usage 34.642MB < 35.000MB +1.0%
iastaspectssplit - 12/12

✅ rsplit_aspect

Metric Status Value SLO % Under SLO
execution_time 1.502µs < 10.000µs +85.0%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ rsplit_noaspect

Metric Status Value SLO % Under SLO
execution_time 584.734ns < 10.000µs +94.2%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ split_aspect

Metric Status Value SLO % Under SLO
execution_time 1.460µs < 10.000µs +85.4%
max_rss_usage 34.623MB < 35.000MB +1.1%

✅ split_noaspect

Metric Status Value SLO % Under SLO
execution_time 569.749ns < 10.000µs +94.3%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ splitlines_aspect

Metric Status Value SLO % Under SLO
execution_time 1.417µs < 10.000µs +85.8%
max_rss_usage 34.603MB < 35.000MB +1.1%

✅ splitlines_noaspect

Metric Status Value SLO % Under SLO
execution_time 586.419ns < 10.000µs +94.1%
max_rss_usage 34.603MB < 35.000MB +1.1%
iastpropagation - 8/8

✅ no-propagation

Metric Status Value SLO % Under SLO
execution_time 48.799µs < 60.000µs +18.7%
max_rss_usage 34.681MB < 35.500MB +2.3%

✅ propagation_enabled

Metric Status Value SLO % Under SLO
execution_time 144.918µs < 160.000µs +9.4%
max_rss_usage 34.642MB < 35.500MB +2.4%

✅ propagation_enabled_100

Metric Status Value SLO % Under SLO
execution_time 1.564ms < 1.800ms +13.1%
max_rss_usage 34.642MB < 35.000MB +1.0%

✅ propagation_enabled_1000

Metric Status Value SLO % Under SLO
execution_time 28.965ms < 30.550ms +5.2%
max_rss_usage 34.642MB < 35.500MB +2.4%
otelsdkspan - 24/24

✅ add-event

Metric Status Value SLO % Under SLO
execution_time 40.794ms < 42.000ms +2.9%
max_rss_usage 31.850MB < 35.000MB +9.0%

✅ add-link

Metric Status Value SLO % Under SLO
execution_time 36.282ms < 38.550ms +5.9%
max_rss_usage 31.870MB < 35.000MB +8.9%

✅ add-metrics

Metric Status Value SLO % Under SLO
execution_time 218.700ms < 232.000ms +5.7%
max_rss_usage 31.850MB < 35.000MB +9.0%

✅ add-tags

Metric Status Value SLO % Under SLO
execution_time 213.779ms < 221.600ms +3.5%
max_rss_usage 31.870MB < 35.000MB +8.9%

✅ get-context

Metric Status Value SLO % Under SLO
execution_time 29.117ms < 31.300ms +7.0%
max_rss_usage 31.870MB < 35.000MB +8.9%

✅ is-recording

Metric Status Value SLO % Under SLO
execution_time 29.160ms < 31.000ms +5.9%
max_rss_usage 31.870MB < 35.000MB +8.9%

✅ record-exception

Metric Status Value SLO % Under SLO
execution_time 63.106ms < 65.850ms +4.2%
max_rss_usage 31.870MB < 35.000MB +8.9%

✅ set-status

Metric Status Value SLO % Under SLO
execution_time 31.902ms < 34.150ms +6.6%
max_rss_usage 31.831MB < 35.000MB +9.1%

✅ start

Metric Status Value SLO % Under SLO
execution_time 28.742ms < 30.150ms +4.7%
max_rss_usage 31.850MB < 35.000MB +9.0%

✅ start-finish

Metric Status Value SLO % Under SLO
execution_time 33.741ms < 35.350ms +4.6%
max_rss_usage 31.850MB < 35.000MB +9.0%

✅ start-finish-telemetry

Metric Status Value SLO % Under SLO
execution_time 34.221ms < 35.450ms +3.5%
max_rss_usage 31.890MB < 35.000MB +8.9%

✅ update-name

Metric Status Value SLO % Under SLO
execution_time 31.131ms < 33.400ms +6.8%
max_rss_usage 31.870MB < 35.000MB +8.9%
otelspan - 22/22

✅ add-event

Metric Status Value SLO % Under SLO
execution_time 44.378ms < 47.150ms +5.9%
max_rss_usage 42.127MB < 42.500MB +0.9%

✅ add-metrics

Metric Status Value SLO % Under SLO
execution_time 318.158ms < 344.800ms +7.7%
max_rss_usage 559.247MB < 562.000MB +0.5%

✅ add-tags

Metric Status Value SLO % Under SLO
execution_time 286.558ms < 314.000ms +8.7%
max_rss_usage 560.972MB < 563.500MB +0.4%

✅ get-context

Metric Status Value SLO % Under SLO
execution_time 84.757ms < 92.350ms +8.2%
max_rss_usage 37.245MB < 38.000MB +2.0%

✅ is-recording

Metric Status Value SLO % Under SLO
execution_time 41.597ms < 44.500ms +6.5%
max_rss_usage 41.503MB < 42.000MB +1.2%

✅ record-exception

Metric Status Value SLO % Under SLO
execution_time 60.323ms < 67.650ms +10.8%
max_rss_usage 37.534MB < 38.000MB +1.2%

✅ set-status

Metric Status Value SLO % Under SLO
execution_time 47.999ms < 50.400ms +4.8%
max_rss_usage 41.517MB < 42.000MB +1.2%

✅ start

Metric Status Value SLO % Under SLO
execution_time 41.758ms < 43.450ms +3.9%
max_rss_usage 41.465MB < 42.000MB +1.3%

✅ start-finish

Metric Status Value SLO % Under SLO
execution_time 81.165ms < 86.000ms +5.6%
max_rss_usage 31.595MB < 32.000MB +1.3%

✅ start-finish-telemetry

Metric Status Value SLO % Under SLO
execution_time 82.674ms < 86.000ms +3.9%
max_rss_usage 31.556MB < 32.000MB +1.4%

✅ update-name

Metric Status Value SLO % Under SLO
execution_time 43.315ms < 45.150ms +4.1%
max_rss_usage 41.850MB < 42.500MB +1.5%
packagespackageforrootmodulemapping - 4/4

✅ cache_off

Metric Status Value SLO % Under SLO
execution_time 342.702ms < 354.300ms +3.3%
max_rss_usage 34.834MB < 38.000MB +8.3%

✅ cache_on

Metric Status Value SLO % Under SLO
execution_time 384.422ns < 10.000µs +96.2%
max_rss_usage 33.035MB < 38.000MB +13.1%
packagesupdateimporteddependencies - 24/24

✅ import_many

Metric Status Value SLO % Under SLO
execution_time 154.683µs < 170.000µs +9.0%
max_rss_usage 34.291MB < 35.500MB +3.4%

✅ import_many_cached

Metric Status Value SLO % Under SLO
execution_time 120.864µs < 130.000µs +7.0%
max_rss_usage 34.088MB < 35.500MB +4.0%

✅ import_many_stdlib

Metric Status Value SLO % Under SLO
execution_time 1.610ms < 1.750ms +8.0%
max_rss_usage 34.423MB < 35.500MB +3.0%

✅ import_many_stdlib_cached

Metric Status Value SLO % Under SLO
execution_time 964.794µs < 1.100ms +12.3%
max_rss_usage 34.166MB < 35.500MB +3.8%

✅ import_many_unknown

Metric Status Value SLO % Under SLO
execution_time 827.398µs < 890.000µs +7.0%
max_rss_usage 34.204MB < 35.500MB +3.7%

✅ import_many_unknown_cached

Metric Status Value SLO % Under SLO
execution_time 789.408µs < 870.000µs +9.3%
max_rss_usage 34.364MB < 35.500MB +3.2%

✅ import_one

Metric Status Value SLO % Under SLO
execution_time 19.870µs < 30.000µs +33.8%
max_rss_usage 34.352MB < 35.500MB +3.2%

✅ import_one_cache

Metric Status Value SLO % Under SLO
execution_time 6.272µs < 10.000µs +37.3%
max_rss_usage 34.130MB < 35.500MB +3.9%

✅ import_one_stdlib

Metric Status Value SLO % Under SLO
execution_time 18.761µs < 20.000µs +6.2%
max_rss_usage 34.103MB < 35.500MB +3.9%

✅ import_one_stdlib_cache

Metric Status Value SLO % Under SLO
execution_time 6.309µs < 10.000µs +36.9%
max_rss_usage 34.173MB < 35.500MB +3.7%

✅ import_one_unknown

Metric Status Value SLO % Under SLO
execution_time 45.002µs < 50.000µs +10.0%
max_rss_usage 34.306MB < 35.500MB +3.4%

✅ import_one_unknown_cache

Metric Status Value SLO % Under SLO
execution_time 6.335µs < 10.000µs +36.6%
max_rss_usage 34.123MB < 35.500MB +3.9%
ratelimiter - 12/12

✅ defaults

Metric Status Value SLO % Under SLO
execution_time 2.330µs < 10.000µs +76.7%
max_rss_usage 28.705MB < 31.000MB +7.4%

✅ high_rate_limit

Metric Status Value SLO % Under SLO
execution_time 2.410µs < 10.000µs +75.9%
max_rss_usage 28.685MB < 31.000MB +7.5%

✅ long_window

Metric Status Value SLO % Under SLO
execution_time 2.367µs < 10.000µs +76.3%
max_rss_usage 28.724MB < 31.000MB +7.3%

✅ low_rate_limit

Metric Status Value SLO % Under SLO
execution_time 2.365µs < 10.000µs +76.4%
max_rss_usage 28.705MB < 31.000MB +7.4%

✅ no_rate_limit

Metric Status Value SLO % Under SLO
execution_time 820.284ns < 10.000µs +91.8%
max_rss_usage 28.607MB < 31.000MB +7.7%

✅ short_window

Metric Status Value SLO % Under SLO
execution_time 2.497µs < 10.000µs +75.0%
max_rss_usage 28.685MB < 31.000MB +7.5%
recursivecomputation - 8/8

✅ deep

Metric Status Value SLO % Under SLO
execution_time 309.119ms < 320.950ms +3.7%
max_rss_usage 30.258MB < 31.000MB +2.4%

✅ deep-profiled

Metric Status Value SLO % Under SLO
execution_time 343.749ms < 359.150ms +4.3%
max_rss_usage 34.583MB < 35.500MB +2.6%

✅ medium

Metric Status Value SLO % Under SLO
execution_time 7.021ms < 7.400ms +5.1%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ shallow

Metric Status Value SLO % Under SLO
execution_time 944.629µs < 1.050ms +10.0%
max_rss_usage 29.098MB < 31.000MB +6.1%
samplingrules - 8/8

✅ average_match

Metric Status Value SLO % Under SLO
execution_time 332.567µs < 350.000µs +5.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ high_match

Metric Status Value SLO % Under SLO
execution_time 501.014µs < 550.000µs +8.9%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ low_match

Metric Status Value SLO % Under SLO
execution_time 170.130µs < 190.000µs +10.5%
max_rss_usage 431.396MB < 432.500MB +0.3%

✅ very_low_match

Metric Status Value SLO % Under SLO
execution_time 8.630ms < 9.150ms +5.7%
max_rss_usage 54.918MB < 55.000MB +0.1%
sethttpmeta - 32/32

✅ all-disabled

Metric Status Value SLO % Under SLO
execution_time 12.055µs < 20.000µs +39.7%
max_rss_usage 29.531MB < 31.000MB +4.7%

✅ all-enabled

Metric Status Value SLO % Under SLO
execution_time 42.226µs < 50.000µs +15.5%
max_rss_usage 29.570MB < 31.000MB +4.6%

✅ collectipvariant_exists

Metric Status Value SLO % Under SLO
execution_time 42.641µs < 50.000µs +14.7%
max_rss_usage 29.570MB < 31.000MB +4.6%

✅ no-collectipvariant

Metric Status Value SLO % Under SLO
execution_time 42.015µs < 50.000µs +16.0%
max_rss_usage 29.531MB < 31.000MB +4.7%

✅ no-useragentvariant

Metric Status Value SLO % Under SLO
execution_time 41.478µs < 50.000µs +17.0%
max_rss_usage 29.491MB < 31.000MB +4.9%

✅ obfuscation-no-query

Metric Status Value SLO % Under SLO
execution_time 42.612µs < 50.000µs +14.8%
max_rss_usage 29.531MB < 31.000MB +4.7%

✅ obfuscation-regular-case-explicit-query

Metric Status Value SLO % Under SLO
execution_time 78.901µs < 90.000µs +12.3%
max_rss_usage 29.963MB < 31.000MB +3.3%

✅ obfuscation-regular-case-implicit-query

Metric Status Value SLO % Under SLO
execution_time 79.403µs < 90.000µs +11.8%
max_rss_usage 29.924MB < 31.000MB +3.5%

✅ obfuscation-send-querystring-disabled

Metric Status Value SLO % Under SLO
execution_time 157.236µs < 170.000µs +7.5%
max_rss_usage 29.924MB < 31.000MB +3.5%

✅ obfuscation-worst-case-explicit-query

Metric Status Value SLO % Under SLO
execution_time 151.861µs < 160.000µs +5.1%
max_rss_usage 29.963MB < 31.000MB +3.3%

✅ obfuscation-worst-case-implicit-query

Metric Status Value SLO % Under SLO
execution_time 157.977µs < 170.000µs +7.1%
max_rss_usage 30.003MB < 31.000MB +3.2%

✅ useragentvariant_exists_1

Metric Status Value SLO % Under SLO
execution_time 41.646µs < 50.000µs +16.7%
max_rss_usage 29.570MB < 31.000MB +4.6%

✅ useragentvariant_exists_2

Metric Status Value SLO % Under SLO
execution_time 42.456µs < 50.000µs +15.1%
max_rss_usage 29.511MB < 31.000MB +4.8%

✅ useragentvariant_exists_3

Metric Status Value SLO % Under SLO
execution_time 41.958µs < 50.000µs +16.1%
max_rss_usage 29.550MB < 31.000MB +4.7%

✅ useragentvariant_not_exists_1

Metric Status Value SLO % Under SLO
execution_time 41.311µs < 50.000µs +17.4%
max_rss_usage 29.550MB < 31.000MB +4.7%

✅ useragentvariant_not_exists_2

Metric Status Value SLO % Under SLO
execution_time 42.394µs < 50.000µs +15.2%
max_rss_usage 29.550MB < 31.000MB +4.7%
span - 26/26

✅ add-event

Metric Status Value SLO % Under SLO
execution_time 22.891ms < 26.200ms +12.6%
max_rss_usage 48.492MB < 49.000MB +1.0%

✅ add-metrics

Metric Status Value SLO % Under SLO
execution_time 90.667ms < 98.350ms +7.8%
max_rss_usage 614.867MB < 961.000MB +36.0%

✅ add-tags

Metric Status Value SLO % Under SLO
execution_time 149.160ms < 168.550ms +11.5%
max_rss_usage 614.442MB < 962.500MB +36.2%

✅ get-context

Metric Status Value SLO % Under SLO
execution_time 21.452ms < 23.700ms +9.5%
max_rss_usage 47.297MB < 47.500MB +0.4%

✅ is-recording

Metric Status Value SLO % Under SLO
execution_time 21.589ms < 23.900ms +9.7%
max_rss_usage 47.302MB < 47.500MB +0.4%

✅ record-exception

Metric Status Value SLO % Under SLO
execution_time 40.900ms < 44.500ms +8.1%
max_rss_usage 40.326MB < 40.500MB +0.4%

✅ set-status

Metric Status Value SLO % Under SLO
execution_time 23.221ms < 26.000ms +10.7%
max_rss_usage 47.293MB < 47.500MB +0.4%

✅ start

Metric Status Value SLO % Under SLO
execution_time 21.291ms < 23.500ms +9.4%
max_rss_usage 47.284MB < 47.500MB +0.5%

✅ start-finish

Metric Status Value SLO % Under SLO
execution_time 50.122ms < 52.500ms +4.5%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ start-finish-telemetry

Metric Status Value SLO % Under SLO
execution_time 51.159ms < 55.300ms +7.5%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ start-finish-traceid128

Metric Status Value SLO % Under SLO
execution_time 53.221ms < 56.050ms +5.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ start-traceid128

Metric Status Value SLO % Under SLO
execution_time 21.415ms < 24.600ms +12.9%
max_rss_usage 47.305MB < 47.500MB +0.4%

✅ update-name

Metric Status Value SLO % Under SLO
execution_time 22.053ms < 24.100ms +8.5%
max_rss_usage 47.822MB < 48.000MB +0.4%
telemetryaddmetric - 30/30

✅ 1-count-metric-1-times

Metric Status Value SLO % Under SLO
execution_time 3.164µs < 10.000µs +68.4%
max_rss_usage 29.137MB < 31.000MB +6.0%

✅ 1-count-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 212.613µs < 240.000µs +11.4%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ 1-distribution-metric-1-times

Metric Status Value SLO % Under SLO
execution_time 3.273µs < 10.000µs +67.3%
max_rss_usage 29.059MB < 31.000MB +6.3%

✅ 1-distribution-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 193.841µs < 210.000µs +7.7%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ 1-gauge-metric-1-times

Metric Status Value SLO % Under SLO
execution_time 2.216µs < 10.000µs +77.8%
max_rss_usage 29.078MB < 31.000MB +6.2%

✅ 1-gauge-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 123.405µs < 140.000µs +11.9%
max_rss_usage 29.059MB < 31.000MB +6.3%

✅ 1-rate-metric-1-times

Metric Status Value SLO % Under SLO
execution_time 3.237µs < 10.000µs +67.6%
max_rss_usage 29.039MB < 31.000MB +6.3%

✅ 1-rate-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 213.082µs < 230.000µs +7.4%
max_rss_usage 29.118MB < 31.000MB +6.1%

✅ 100-count-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 21.004ms < 22.500ms +6.6%
max_rss_usage 29.039MB < 31.000MB +6.3%

✅ 100-distribution-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 1.984ms < 2.100ms +5.5%
max_rss_usage 29.039MB < 31.000MB +6.3%

✅ 100-gauge-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 1.274ms < 1.400ms +9.0%
max_rss_usage 29.157MB < 31.000MB +5.9%

✅ 100-rate-metrics-100-times

Metric Status Value SLO % Under SLO
execution_time 2.160ms < 2.400ms +10.0%
max_rss_usage 29.117MB < 31.000MB +6.1%

✅ flush-1-metric

Metric Status Value SLO % Under SLO
execution_time 4.399µs < 10.000µs +56.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ flush-100-metrics

Metric Status Value SLO % Under SLO
execution_time 181.674µs < 200.000µs +9.2%
max_rss_usage 29.078MB < 31.000MB +6.2%

✅ flush-1000-metrics

Metric Status Value SLO % Under SLO
execution_time 2.187ms < 2.350ms +6.9%
max_rss_usage 30.277MB < 31.000MB +2.3%
tracer - 6/6

✅ large

Metric Status Value SLO % Under SLO
execution_time 29.645ms < 32.950ms +10.0%
max_rss_usage 30.278MB < 31.000MB +2.3%

✅ medium

Metric Status Value SLO % Under SLO
execution_time 2.912ms < 3.200ms +9.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

✅ small

Metric Status Value SLO % Under SLO
execution_time 332.853µs < 370.000µs +10.0%
max_rss_usage 29.098MB < 31.000MB +6.1%

@avara1986 avara1986 changed the title chore(iast): fix iast gevent error with iast fix(iast): gevent lazy timeouts Jul 24, 2025
@avara1986 avara1986 removed the changelog/no-changelog A changelog entry is not required for this PR. label Jul 24, 2025
@avara1986 avara1986 marked this pull request as ready for review July 24, 2025 19:41
@avara1986 avara1986 requested review from a team as code owners July 24, 2025 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ASM Application Security Monitoring
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants