This is an automated email from the ASF dual-hosted git repository.

shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new e5c2ea9b3d1 Ask agents to measure performance-sensitive components 
(#74579)
e5c2ea9b3d1 is described below

commit e5c2ea9b3d1a72532e58f5be84f2fba7fa390a31
Author: David Blain <[email protected]>
AuthorDate: Sun Oct 18 17:39:21 2026 +0200

    Ask agents to measure performance-sensitive components (#74579)
    
    Require benchmarks for changes to performance-sensitive components before 
publishing
    
    ---------
    
    Co-authored-by: Dev-iL <[email protected]>
---
 .agents/skills/airflow-publish-changes/SKILL.md    |  9 +++++--
 .../references/performance-sensitive-components.md | 30 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/.agents/skills/airflow-publish-changes/SKILL.md 
b/.agents/skills/airflow-publish-changes/SKILL.md
index 8f115bea26f..1fd2c1246d9 100644
--- a/.agents/skills/airflow-publish-changes/SKILL.md
+++ b/.agents/skills/airflow-publish-changes/SKILL.md
@@ -115,8 +115,13 @@ code review checklist in 
[`.github/instructions/code-review.instructions.md`](..
    and fix any failures. The skipped hooks start long-running local servers or 
provision the
    opt-in Codex environment rather than run checks that complete.
 6. Run relevant individual tests and confirm they pass.
-7. Run `breeze verify` and execute every command it lists. The list comes from 
the same selective-checks logic CI uses. `breeze verify --full` shows 
everything CI runs for the default matrix cell, including the full suite CI 
adds when a change touches CI tooling or dependency files. Static checks are 
not listed: steps 4 and 5 cover them. Confirm the commands pass and check for 
CI-specific issues.
-8. Check for security issues — no secrets, no injection vulnerabilities, no 
unsafe patterns.
+7. If the diff touches a performance-sensitive component (Task SDK comms, 
supervisor and task runner;
+   Execution API; logging and secret masking; serialization; scheduler and 
triggerer loops; Dag
+   processing), benchmark the code before and after the change as
+   
[`references/performance-sensitive-components.md`](references/performance-sensitive-components.md)
+   describes, and report the outcome to the user.
+8. Run `breeze verify` and execute every command it lists. The list comes from 
the same selective-checks logic CI uses. `breeze verify --full` shows 
everything CI runs for the default matrix cell, including the full suite CI 
adds when a change touches CI tooling or dependency files. Static checks are 
not listed: steps 4 and 5 cover them. Confirm the commands pass and check for 
CI-specific issues.
+9. Check for security issues — no secrets, no injection vulnerabilities, no 
unsafe patterns.
 
 Before pushing, always rebase your branch onto the latest target branch 
(usually `main`)
 to avoid merge conflicts and ensure CI runs against up-to-date code:
diff --git 
a/.agents/skills/airflow-publish-changes/references/performance-sensitive-components.md
 
b/.agents/skills/airflow-publish-changes/references/performance-sensitive-components.md
new file mode 100644
index 00000000000..decde265640
--- /dev/null
+++ 
b/.agents/skills/airflow-publish-changes/references/performance-sensitive-components.md
@@ -0,0 +1,30 @@
+<!-- SPDX-License-Identifier: Apache-2.0
+     https://www.apache.org/licenses/LICENSE-2.0 -->
+
+# Performance-sensitive components
+
+Some code runs for every task, every Task SDK call, every log line or every 
scheduler loop, so a
+slowdown of a few microseconds there multiplies across every deployment. 
Passing tests do not show
+it. Do not skip the measurement when the diff touches one of these:
+
+| Component | Path | Runs for |
+|---|---|---|
+| Task SDK comms, supervisor and task runner | 
`task-sdk/src/airflow/sdk/execution_time/` | every Variable, Connection and 
XCom call of a task |
+| Execution API | `airflow-core/src/airflow/api_fastapi/execution_api/` | the 
server side of every Task SDK call |
+| Logging and secret masking | `shared/logging/`, `shared/secrets_masker/` | 
every log line (see [#71721](https://github.com/apache/airflow/issues/71721)) |
+| Serialization | `airflow-core/src/airflow/serialization/` | every Dag parse, 
every Dag load in the scheduler and API server |
+| Scheduler and triggerer loops | `airflow-core/src/airflow/jobs/` | every 
loop iteration |
+| Dag processing | `airflow-core/src/airflow/dag_processing/` | every Dag file 
parse |
+
+To measure:
+
+1. Time the changed code path on the base commit and on the change with the 
same script. Alternate
+   base and head runs, at least three of each, and compare the medians. Use 
`timeit` for calls
+   under a microsecond, and the helpers in 
`devel-common/src/tests_common/test_utils/perf/perf_kit/`
+   (`timing`, `repeat`, `profiled`, `trace_memory`) for longer ones.
+2. In the same runs, time something the change does not touch as a control. If 
the control moved by
+   more than about 10%, the machine was noisy: run again before drawing 
conclusions.
+3. For code that queries the database, also pin the number of queries in the 
tests with
+   `assert_queries_count` from `tests_common.test_utils.asserts`.
+4. Put a before/after table in the PR description. If the change is slower, 
say by how much and
+   why that is acceptable. Do not commit the timing script unless a reviewer 
asks for it.

Reply via email to