Repository navigation
Isolate Edge job state by task attempt UUID - #73918
Merged
Merged
Conversation
ashb
added this pull request to stack #73919
September 29, 2026 19:20
kaxil
reviewed
Sep 29, 2026
ashb
requested review from
XD-DENG,
hussein-awala,
jedcunningham,
o-nikolas and
pierrejeambrun
as code owners
October 1, 2026 13:27
ashb
force-pushed
the
edge-exeuctor-keyed-by-uuid
branch
from
October 1, 2026 22:35
811fbe3 to
e95969a
Compare
ashb
force-pushed
the
edge-exeuctor-keyed-by-uuid
branch
from
October 2, 2026 11:30
e95969a to
69522b0
Compare
jedcunningham
approved these changes
Oct 2, 2026
ashb
requested review from
gopidesupavan,
jason810496 and
potiuk
as code owners
October 3, 2026 08:02
Edge workers report job state through a coordinate-addressed API backed by a coordinate primary key. UUID executor bookkeeping alone cannot stop a late report from completing a replacement job at the same coordinates. Extend the job key with an attempt UUID and pass that identity from fetch to worker state reports. Preserve an empty discriminator for pre-upgrade jobs so old workers can finish those rows without touching newer attempts. Adoption reads the immutable UUID from the stored workload for legacy rows; resuming that same attempt reuses its row instead of creating a duplicate. Older supported cores continue to schedule coordinate-keyed jobs. The migration requires upgraded API servers before schedulers create UUID jobs. New jobs require workers advertising UUID support; older workers can finish legacy jobs. Refuse schema downgrade while duplicate coordinate keys would collapse distinct jobs, and retain buffered logs while a sibling job still uses their coordinate namespace. Log paths remain coordinate-based.
ashb
force-pushed
the
edge-exeuctor-keyed-by-uuid
branch
from
October 3, 2026 08:16
8e768d8 to
afabb79
Compare
12 of 21 tasks
Member
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Edge workers previously reported job state through a coordinate-addressed (i.e. 4- or 5-tuple) API backed by a coordinate primary key. The compatibility shim-based UUID executor bookkeeping alone cannot stop a late report from completing a replacement job for the "same" task.
To fix it properly, we extend the job key with an attempt UUID (
ti.id) and pass that identity from fetch to worker state reports. We preserve an empty discriminator for pre-upgrade jobs so old workers can finish those rows without touching newer attempts. Adoption reads the immutable UUID from the stored workload for legacy rows; resuming that same attempt reuses its row instead of creating a duplicate. Older supported airflow-core versions continue to schedule coordinate-keyed jobs.The migration requires upgraded API servers before schedulers create UUID jobs. New jobs require workers advertising UUID support; older workers can finish legacy jobs. Refuse schema downgrade while duplicate coordinate keys would collapse distinct jobs, and retain buffered logs while a sibling job still uses their coordinate namespace.
Stack created with GitHub Stacks CLI • Give Feedback 💬