-
Notifications
You must be signed in to change notification settings - Fork 468
chore(iast): fix iast in the ci #15175
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
Conversation
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 244 ± 4 ms. The average import time from base is: 250 ± 4 ms. The import time difference between this PR and base is: -6.6 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate avara1986/APPSEC-59497_pytest_segfault_ci (1b123bd) with baseline main (1717b70) 📈 Performance Regressions (2 suites)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.405µs (SLO: <10.000µs 📉 -96.0%) vs baseline: +0.5% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ add_inplace_aspectTime: ✅ 0.406µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +0.4% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ add_inplace_noaspectTime: ✅ 0.321µs (SLO: <10.000µs 📉 -96.8%) vs baseline: +0.1% Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +4.8% ✅ add_noaspectTime: ✅ 0.278µs (SLO: <10.000µs 📉 -97.2%) vs baseline: ~same Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +4.7% ✅ bytearray_aspectTime: ✅ 1.322µs (SLO: <10.000µs 📉 -86.8%) vs baseline: -0.4% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.9% ✅ bytearray_extend_aspectTime: ✅ 1.602µs (SLO: <10.000µs 📉 -84.0%) vs baseline: +5.2% Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +5.0% ✅ bytearray_extend_noaspectTime: ✅ 0.610µs (SLO: <10.000µs 📉 -93.9%) vs baseline: -0.6% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +5.0% ✅ bytearray_noaspectTime: ✅ 0.480µs (SLO: <10.000µs 📉 -95.2%) vs baseline: -1.0% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.8% ✅ bytes_aspectTime: ✅ 1.370µs (SLO: <10.000µs 📉 -86.3%) vs baseline: +6.8% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.0% ✅ bytes_noaspectTime: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +1.1% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ bytesio_aspectTime: ✅ 1.314µs (SLO: <10.000µs 📉 -86.9%) vs baseline: +0.1% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ bytesio_noaspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.8% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.9% ✅ capitalize_aspectTime: ✅ 0.736µs (SLO: <10.000µs 📉 -92.6%) vs baseline: ~same Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +4.8% ✅ capitalize_noaspectTime: ✅ 0.435µs (SLO: <10.000µs 📉 -95.7%) vs baseline: +0.3% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.7% ✅ casefold_aspectTime: ✅ 0.735µs (SLO: <10.000µs 📉 -92.6%) vs baseline: -0.6% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.6% ✅ casefold_noaspectTime: ✅ 0.371µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +2.0% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.0% ✅ decode_aspectTime: ✅ 0.724µs (SLO: <10.000µs 📉 -92.8%) vs baseline: +0.4% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.8% ✅ decode_noaspectTime: ✅ 0.419µs (SLO: <10.000µs 📉 -95.8%) vs baseline: -0.3% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ encode_aspectTime: ✅ 0.714µs (SLO: <10.000µs 📉 -92.9%) vs baseline: +0.8% Memory: ✅ 37.336MB (SLO: <39.000MB -4.3%) vs baseline: +5.0% ✅ encode_noaspectTime: ✅ 0.402µs (SLO: <10.000µs 📉 -96.0%) vs baseline: -0.4% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ format_aspectTime: ✅ 3.292µs (SLO: <10.000µs 📉 -67.1%) vs baseline: -0.5% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.6% ✅ format_map_aspectTime: ✅ 3.524µs (SLO: <10.000µs 📉 -64.8%) vs baseline: +1.0% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.0% ✅ format_map_noaspectTime: ✅ 0.773µs (SLO: <10.000µs 📉 -92.3%) vs baseline: +0.1% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.7% ✅ format_noaspectTime: ✅ 0.601µs (SLO: <10.000µs 📉 -94.0%) vs baseline: +0.5% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ index_aspectTime: ✅ 0.361µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +0.6% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +5.0% ✅ index_noaspectTime: ✅ 0.276µs (SLO: <10.000µs 📉 -97.2%) vs baseline: -2.0% Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +4.8% ✅ join_aspectTime: ✅ 1.361µs (SLO: <10.000µs 📉 -86.4%) vs baseline: +0.2% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.6% ✅ join_noaspectTime: ✅ 0.488µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.4% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.2% ✅ ljust_aspectTime: ✅ 2.531µs (SLO: <20.000µs 📉 -87.3%) vs baseline: -0.8% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.6% ✅ ljust_noaspectTime: ✅ 0.403µs (SLO: <10.000µs 📉 -96.0%) vs baseline: ~same Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 2.220µs (SLO: <10.000µs 📉 -77.8%) vs baseline: +1.7% Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +4.9% ✅ lower_noaspectTime: ✅ 0.367µs (SLO: <10.000µs 📉 -96.3%) vs baseline: ~same Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.8% ✅ lstrip_aspectTime: ✅ 2.504µs (SLO: <20.000µs 📉 -87.5%) vs baseline: 📈 +12.7% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ lstrip_noaspectTime: ✅ 0.380µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.9% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.8% ✅ modulo_aspectTime: ✅ 1.042µs (SLO: <10.000µs 📉 -89.6%) vs baseline: -0.5% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.1% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.547µs (SLO: <10.000µs 📉 -84.5%) vs baseline: +0.3% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.7% ✅ modulo_aspect_for_bytesTime: ✅ 0.970µs (SLO: <10.000µs 📉 -90.3%) vs baseline: -0.6% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.241µs (SLO: <10.000µs 📉 -87.6%) vs baseline: +0.2% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +4.7% ✅ modulo_noaspectTime: ✅ 0.627µs (SLO: <10.000µs 📉 -93.7%) vs baseline: -0.3% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ replace_aspectTime: ✅ 4.839µs (SLO: <10.000µs 📉 -51.6%) vs baseline: -0.4% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.8% ✅ replace_noaspectTime: ✅ 0.459µs (SLO: <10.000µs 📉 -95.4%) vs baseline: ~same Memory: ✅ 37.356MB (SLO: <39.000MB -4.2%) vs baseline: +5.2% ✅ repr_aspectTime: ✅ 0.906µs (SLO: <10.000µs 📉 -90.9%) vs baseline: ~same Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.7% ✅ repr_noaspectTime: ✅ 0.420µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +0.8% Memory: ✅ 37.198MB (SLO: <39.000MB -4.6%) vs baseline: +4.6% ✅ rstrip_aspectTime: ✅ 1.891µs (SLO: <20.000µs 📉 -90.5%) vs baseline: +0.9% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.7% ✅ rstrip_noaspectTime: ✅ 0.379µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.4% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.7% ✅ slice_aspectTime: ✅ 0.499µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +1.2% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.8% ✅ slice_noaspectTime: ✅ 0.442µs (SLO: <10.000µs 📉 -95.6%) vs baseline: -2.2% Memory: ✅ 37.316MB (SLO: <39.000MB -4.3%) vs baseline: +5.0% ✅ stringio_aspectTime: ✅ 1.522µs (SLO: <10.000µs 📉 -84.8%) vs baseline: -1.5% Memory: ✅ 37.218MB (SLO: <39.000MB -4.6%) vs baseline: +4.6% ✅ stringio_noaspectTime: ✅ 0.718µs (SLO: <10.000µs 📉 -92.8%) vs baseline: -0.1% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.9% ✅ strip_aspectTime: ✅ 2.223µs (SLO: <20.000µs 📉 -88.9%) vs baseline: -0.2% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ strip_noaspectTime: ✅ 0.388µs (SLO: <10.000µs 📉 -96.1%) vs baseline: -0.9% Memory: ✅ 37.238MB (SLO: <39.000MB -4.5%) vs baseline: +4.8% ✅ swapcase_aspectTime: ✅ 2.523µs (SLO: <10.000µs 📉 -74.8%) vs baseline: +5.4% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ swapcase_noaspectTime: ✅ 0.535µs (SLO: <10.000µs 📉 -94.7%) vs baseline: -0.6% Memory: ✅ 37.257MB (SLO: <39.000MB -4.5%) vs baseline: +4.7% ✅ title_aspectTime: ✅ 2.351µs (SLO: <10.000µs 📉 -76.5%) vs baseline: +0.4% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ title_noaspectTime: ✅ 0.502µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +0.4% Memory: ✅ 37.336MB (SLO: <39.000MB -4.3%) vs baseline: +5.2% ✅ translate_aspectTime: ✅ 3.238µs (SLO: <10.000µs 📉 -67.6%) vs baseline: ~same Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% ✅ translate_noaspectTime: ✅ 1.037µs (SLO: <10.000µs 📉 -89.6%) vs baseline: +0.2% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.7% ✅ upper_aspectTime: ✅ 2.229µs (SLO: <10.000µs 📉 -77.7%) vs baseline: +1.0% Memory: ✅ 37.297MB (SLO: <39.000MB -4.4%) vs baseline: +5.0% ✅ upper_noaspectTime: ✅ 0.371µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.4% Memory: ✅ 37.277MB (SLO: <39.000MB -4.4%) vs baseline: +4.9% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.228µs (SLO: <20.000µs 📉 -83.9%) vs baseline: +9.6% Memory: ✅ 31.949MB (SLO: <34.000MB -6.0%) vs baseline: +4.9% ✅ 1-count-metrics-100-timesTime: ✅ 199.845µs (SLO: <220.000µs -9.2%) vs baseline: -0.2% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 3.526µs (SLO: <20.000µs 📉 -82.4%) vs baseline: +7.6% Memory: ✅ 31.968MB (SLO: <34.000MB -6.0%) vs baseline: +4.8% ✅ 1-distribution-metrics-100-timesTime: ✅ 210.757µs (SLO: <220.000µs -4.2%) vs baseline: -1.0% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.7% ✅ 1-gauge-metric-1-timesTime: ✅ 2.424µs (SLO: <20.000µs 📉 -87.9%) vs baseline: 📈 +11.4% Memory: ✅ 32.027MB (SLO: <34.000MB -5.8%) vs baseline: +5.1% ✅ 1-gauge-metrics-100-timesTime: ✅ 137.346µs (SLO: <150.000µs -8.4%) vs baseline: +0.4% Memory: ✅ 31.870MB (SLO: <34.000MB -6.3%) vs baseline: +4.6% ✅ 1-rate-metric-1-timesTime: ✅ 3.398µs (SLO: <20.000µs 📉 -83.0%) vs baseline: 📈 +11.1% Memory: ✅ 32.008MB (SLO: <34.000MB -5.9%) vs baseline: +5.0% ✅ 1-rate-metrics-100-timesTime: ✅ 210.607µs (SLO: <250.000µs 📉 -15.8%) vs baseline: -1.2% Memory: ✅ 31.988MB (SLO: <34.000MB -5.9%) vs baseline: +4.9% ✅ 100-count-metrics-100-timesTime: ✅ 20.123ms (SLO: <22.000ms -8.5%) vs baseline: -0.4% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.8% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.238ms (SLO: <2.300ms -2.7%) vs baseline: -0.4% Memory: ✅ 31.988MB (SLO: <34.000MB -5.9%) vs baseline: +4.7% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.407ms (SLO: <1.550ms -9.2%) vs baseline: +0.6% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +5.1% ✅ 100-rate-metrics-100-timesTime: ✅ 2.195ms (SLO: <2.550ms 📉 -13.9%) vs baseline: +0.4% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ flush-1-metricTime: ✅ 4.823µs (SLO: <20.000µs 📉 -75.9%) vs baseline: +8.7% Memory: ✅ 31.968MB (SLO: <34.000MB -6.0%) vs baseline: +4.8% ✅ flush-100-metricsTime: ✅ 176.283µs (SLO: <250.000µs 📉 -29.5%) vs baseline: -0.7% Memory: ✅ 31.949MB (SLO: <34.000MB -6.0%) vs baseline: +4.8% ✅ flush-1000-metricsTime: ✅ 2.111ms (SLO: <2.500ms 📉 -15.6%) vs baseline: -1.8% Memory: ✅ 32.735MB (SLO: <34.500MB -5.1%) vs baseline: +4.5% 🟡 Near SLO Breach (6 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.476ms (SLO: <22.300ms -8.2%) vs baseline: ~same Memory: ✅ 66.070MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.335ms (SLO: <1.450ms -7.9%) vs baseline: -0.4% Memory: ✅ 64.149MB (SLO: <67.000MB -4.3%) vs baseline: +4.9% ✅ iastTime: ✅ 20.493ms (SLO: <22.250ms -7.9%) vs baseline: +0.4% Memory: ✅ 66.178MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.1% ✅ profilerTime: ✅ 15.579ms (SLO: <16.550ms -5.9%) vs baseline: +0.3% Memory: ✅ 53.917MB (SLO: <54.500MB 🟡 -1.1%) vs baseline: +4.5% ✅ resource-renamingTime: ✅ 20.546ms (SLO: <21.750ms -5.5%) vs baseline: ~same Memory: ✅ 66.258MB (SLO: <67.000MB 🟡 -1.1%) vs baseline: +5.3% ✅ span-code-originTime: ✅ 25.026ms (SLO: <28.200ms 📉 -11.3%) vs baseline: -1.4% Memory: ✅ 67.456MB (SLO: <69.500MB -2.9%) vs baseline: +5.4% ✅ tracerTime: ✅ 20.542ms (SLO: <21.750ms -5.6%) vs baseline: +0.3% Memory: ✅ 66.141MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.0% ✅ tracer-and-profilerTime: ✅ 22.748ms (SLO: <23.500ms -3.2%) vs baseline: -0.1% Memory: ✅ 67.841MB (SLO: <68.000MB 🟡 -0.2%) vs baseline: +5.0% ✅ tracer-dont-create-db-spansTime: ✅ 19.274ms (SLO: <21.500ms 📉 -10.4%) vs baseline: -0.5% Memory: ✅ 66.128MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.1% ✅ tracer-minimalTime: ✅ 16.641ms (SLO: <17.500ms -4.9%) vs baseline: +0.1% Memory: ✅ 66.052MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 20.465ms (SLO: <21.750ms -5.9%) vs baseline: ~same Memory: ✅ 67.771MB (SLO: <72.500MB -6.5%) vs baseline: +4.9% ✅ tracer-no-cachesTime: ✅ 18.492ms (SLO: <19.650ms -5.9%) vs baseline: ~same Memory: ✅ 66.178MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.1% ✅ tracer-no-databasesTime: ✅ 18.763ms (SLO: <20.100ms -6.6%) vs baseline: +0.1% Memory: ✅ 65.814MB (SLO: <67.000MB 🟡 -1.8%) vs baseline: +4.5% ✅ tracer-no-middlewareTime: ✅ 20.210ms (SLO: <21.500ms -6.0%) vs baseline: ~same Memory: ✅ 66.191MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.1% ✅ tracer-no-templatesTime: ✅ 20.313ms (SLO: <22.000ms -7.7%) vs baseline: +0.3% Memory: ✅ 66.119MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.0% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.046ms (SLO: <19.850ms -9.1%) vs baseline: ~same Memory: ✅ 66.122MB (SLO: <66.500MB 🟡 -0.6%) vs baseline: +4.7% ✅ errortracking-enabled-userTime: ✅ 18.050ms (SLO: <19.400ms -7.0%) vs baseline: +0.1% Memory: ✅ 66.159MB (SLO: <66.500MB 🟡 -0.5%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 18.052ms (SLO: <19.450ms -7.2%) vs baseline: ~same Memory: ✅ 65.962MB (SLO: <66.500MB 🟡 -0.8%) vs baseline: +4.8% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.068ms (SLO: <2.300ms 📉 -10.1%) vs baseline: -0.5% Memory: ✅ 52.573MB (SLO: <53.500MB 🟡 -1.7%) vs baseline: +4.9% ✅ errortracking-enabled-userTime: ✅ 2.070ms (SLO: <2.250ms -8.0%) vs baseline: -0.2% Memory: ✅ 52.573MB (SLO: <53.500MB 🟡 -1.7%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 2.063ms (SLO: <2.300ms 📉 -10.3%) vs baseline: -0.2% Memory: ✅ 52.632MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +5.1% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.602ms (SLO: <4.750ms -3.1%) vs baseline: -0.3% Memory: ✅ 62.359MB (SLO: <65.000MB -4.1%) vs baseline: +4.8% ✅ appsec-postTime: ✅ 6.636ms (SLO: <6.750ms 🟡 -1.7%) vs baseline: ~same Memory: ✅ 62.353MB (SLO: <65.000MB -4.1%) vs baseline: +4.8% ✅ appsec-telemetryTime: ✅ 4.594ms (SLO: <4.750ms -3.3%) vs baseline: +0.1% Memory: ✅ 62.285MB (SLO: <65.000MB -4.2%) vs baseline: +4.7% ✅ debuggerTime: ✅ 1.860ms (SLO: <2.000ms -7.0%) vs baseline: +0.2% Memory: ✅ 45.313MB (SLO: <47.000MB -3.6%) vs baseline: +5.1% ✅ iast-getTime: ✅ 1.855ms (SLO: <2.000ms -7.2%) vs baseline: ~same Memory: ✅ 42.166MB (SLO: <49.000MB 📉 -13.9%) vs baseline: +4.9% ✅ profilerTime: ✅ 1.914ms (SLO: <2.100ms -8.8%) vs baseline: ~same Memory: ✅ 46.669MB (SLO: <47.000MB 🟡 -0.7%) vs baseline: +4.9% ✅ resource-renamingTime: ✅ 3.367ms (SLO: <3.650ms -7.7%) vs baseline: +0.3% Memory: ✅ 52.618MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +4.9% ✅ tracerTime: ✅ 3.358ms (SLO: <3.650ms -8.0%) vs baseline: ~same Memory: ✅ 52.629MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 3.360ms (SLO: <3.650ms -7.9%) vs baseline: +0.1% Memory: ✅ 54.009MB (SLO: <60.000MB -10.0%) vs baseline: +4.7% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.970ms (SLO: <4.200ms -5.5%) vs baseline: ~same Memory: ✅ 62.344MB (SLO: <66.000MB -5.5%) vs baseline: +4.8% ✅ iast-enabledTime: ✅ 2.445ms (SLO: <2.800ms 📉 -12.7%) vs baseline: +0.2% Memory: ✅ 58.845MB (SLO: <60.000MB 🟡 -1.9%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 2.056ms (SLO: <2.250ms -8.6%) vs baseline: ~same Memory: ✅ 52.612MB (SLO: <54.500MB -3.5%) vs baseline: +4.7% 🟡 recursivecomputation - 8/8✅ deepTime: ✅ 309.034ms (SLO: <320.950ms -3.7%) vs baseline: ~same Memory: ✅ 32.735MB (SLO: <34.500MB -5.1%) vs baseline: +4.5% ✅ deep-profiledTime: ✅ 328.281ms (SLO: <359.150ms -8.6%) vs baseline: ~same Memory: ✅ 38.448MB (SLO: <39.000MB 🟡 -1.4%) vs baseline: +5.0% ✅ mediumTime: ✅ 7.014ms (SLO: <7.400ms -5.2%) vs baseline: +0.3% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ shallowTime: ✅ 0.943ms (SLO: <1.050ms 📉 -10.2%) vs baseline: +0.1% Memory: ✅ 31.890MB (SLO: <34.000MB -6.2%) vs baseline: +4.5%
|
# Summary This PR extends **PR #15141**'s fork safety implementation to properly handle IAST in the CI/pytest environment. It fixes two critical issues: 1. **Threading race conditions** in FastAPI tests (Python 3.12) with anyio's multi-threaded execution 2. **Fork safety in pytest** by ensuring IAST is always disabled in child processes during test execution The solution adds a pytest-specific mode flag that enhances the existing fork handler without affecting production behavior. ## Context This PR builds on top of **PR #15141** which implemented fork safety for IAST by disabling it in multiprocess child processes. That PR successfully prevented segfaults in production multiprocessing scenarios but revealed additional issues in the CI/pytest environment.
## What Does This Do? This PR continues the work of the following PRs #15175 #15141 Fixes a bug where IAST's `post_preload()` function drops the `inspect` module from `sys.modules`, causing pytest's test collection phase to fail with signature introspection errors ## Motivation When IAST is enabled and `post_preload()` drops the `inspect` module from memory, pytest encounters errors during test collection: ``` ERROR collecting unexpected object <Signature (self, enabled, clieny, client, mock_client, session_user)> in __signature__ attribute Could not determine arguments of <function test_get_user at XXX>: unexpected object <Signature> in __signature__ attribute ``` ### Root Cause The issue occurs because: 1. **Pytest imports `inspect` early** and creates `Signature` objects during its initialization 2. **IAST's `post_preload()` removes `inspect`** from `sys.modules` to avoid Gevent conflicts 3. **Pytest reimports `inspect`** when it continues to use inspect functions 4. **Type/identity checks fail** because the `Signature` class from the old module doesn't match the new one This is a module identity mismatch problem: `old_inspect.Signature` ≠ `new_inspect.Signature` When pytest tries to validate signatures with `isinstance(sig, inspect.Signature)`, it fails because the signature object's class is from the old (deleted) module, but `inspect.Signature` refers to the class from the new (reimported) module. ## Gevent Compatibility Note While the original implementation dropped `inspect` to prevent Gevent conflicts, this created a worse problem by breaking pytest entirely. **Trade-off Decision:** - Pytest compatibility is **critical** for developers (breaks all testing) - Gevent timeout issues (if they occur with `inspect`) are **rare and workaroundable** - Breaking all pytest collection is **not acceptable** If Gevent issues resurface with the `inspect` module, they should be addressed through: 1. Local imports of `inspect` within IAST functions (as originally intended) 2. Documentation for Gevent users 3. Alternative approaches that don't break pytest
Summary
This PR extends PR #15141's fork safety implementation to properly handle IAST in the CI/pytest environment. It fixes two critical issues:
The solution adds a pytest-specific mode flag that enhances the existing fork handler without affecting production behavior.
Context
This PR builds on top of PR #15141 which implemented fork safety for IAST by disabling it in multiprocess child processes. That PR successfully prevented segfaults in production multiprocessing scenarios but revealed additional issues in the CI/pytest environment.