Repository navigation
Conversation
45de3bf to
a66b446
Compare
|
Cross-linking, since this overlaps two other open PRs on the same code and I do not think the three authors are aware of each other. #70714 (opened 30 July) changes deadline references to receive the in-memory On the interval workaround: once #70370 lands, storing numeric intervals in the tests to stay clear of the JSON bug is no longer necessary, and storing |
|
#71802 also edits When you rebase on top of #70714, the |
Thanks for the cross-links! I’d only accounted for #70370. For #70714, I’ll keep the For the interval tests, agreed — I’ll switch them to #71802 noted as well. It should be a textual conflict in the interval handling rather than a behavioral one. |
|
It's going to be a bit of a mess untangling them all as we merge them, but we'll sort it out. |
a66b446 to
275c422
Compare
275c422 to
874fd16
Compare
|
Thanks for the review — all three are fair. I've addressed the reference matching issue: matching now ignores fields the stored row lacks, and a matched row is refreshed in place so For recomputing from the user's reference and the missing |
2b35a1c to
7078bac
Compare
|
I've been working through a long chain of PRs which are all editing the same section of code, with the goal of merging them in the order that will minimize conflicts and this one is up next. If you can get it rebased and green, I'll merge it. This is not going to be a simple "click to fast-forward" rebase, but I tried to make it as painless as could. Be careful not to lose the |
The evaluation timing a reference is registered with only lived in the in-memory registry of the process that ran the Dag file, so the scheduler had no way to tell a queued-anchored reference from any other and fell back to matching the built-in class name. Custom references registered as DeadlineReference.TYPES.DAGRUN_QUEUED were silently left pointing at the old queued_at. closes: apache#71747
Comparing the whole reference dict made every stored alert look changed as soon as an upgrade added a field to the serialized form. All alert UUIDs were then regenerated, and because Deadline.deadline_alert_id is ON DELETE SET NULL, the deadlines of running Dag runs lost their alert and stopped being re-anchored entirely.
Now that the clear path decodes the alert to resolve its interval (apache#70370), a bare number and an unregistered reference class no longer stand in for what the Dag processor actually writes: decoding refuses a custom reference that no plugin advertises, so the deadline was silently left alone.
…ence The recompute now asks the reference for the new time (apache#70714), so a reference whose evaluation returns something other than the bare queued_at is what separates re-anchoring through the reference from the built-in formula.
7078bac to
b12a9e8
Compare
|
Thanks for the review! I've rebased onto |
Summary
A custom deadline reference registered as
DeadlineReference.TYPES.DAGRUN_QUEUEDis never re-anchored when its Dag run is cleared — the built-inDAGRUN_QUEUED_ATdeadline moves to the newqueued_at, the custom one keeps pointing at the old one.The registered timing only ever existed in the in-memory
DeadlineReference.TYPEStuples of the process that ran the Dag file, so the clear path could recognise a queued-anchored deadline only by matching the built-in class name, which no custom class satisfies.The serializer adds the field rather than
serialize_reference(), because custom references are expected to override that method and an override would drop it.Compatibility
An alert serialized before this change keeps its id and gains the timing on the next parse rather than being replaced, which would strand the deadlines of running Dag runs.
closes: #71747
Was generative AI tooling used to co-author this PR?
Generated-by: Claude Code (Opus 5) following the guidelines