Repository navigation
fix(queue-storage): ignore retired ready rows in point reads (0.6) - #651
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
After a priority or queue move, the retained source ready row and live destination can have identical attempt timestamps. A ring wrap can make get_job choose the source row, returning the old priority or queue even though the batch operation reports success.
Exclude ready rows with a tombstone matching their full slot, generation and lane identity from the available-job point-read candidates. Keep retained rows available to the running and terminal hydration paths.
This predates 0.6.13 and explains the priority4-versus1 failures seen in #629 and #638 CI. Two public-API regressions wrap child7 to child0, move priority/queue, prove the source is tombstoned, and require the live value. Both fail before the fix and pass on PostgreSQL17/18 after it. The original failing batch-operation test also passes with the forced wrap.
Required fmt, offline all-target/all-feature Clippy (-D warnings), and workspace build pass. Main counterpart is included in #600. No migration.