Repository navigation
Conversation
The task held a worker transaction open for the whole run, up to its 120 s deadline, pinning xmin on the default primary. Each PENDING row, state change and file upload now commits on its own, and a comparison whose diff or upload raises is marked FAILED so it can be retried.
Recording each comparison as it finished left PENDING, PROCESSING and FAILED rows behind when a run failed, and neither the sweeper nor a member's compare request recovers those. The run now computes every result first and records them in one short transaction, so a failed run leaves no rows, as it did before.
A deadline landing while the recording transaction commits left SUCCESS rows pointing at deleted files. Cleanup now checks for a referencing row first. The single-comparison path claims its row with a conditional update, so it cannot overwrite a result an overlapping run recorded.
The old task dispatched the status check and PR comment inside its transaction, so a deadline landing on the COMMIT itself never lost them. Dispatching after the recording transaction reopened that window.
The single-comparison helper marked its row PROCESSING and later SUCCESS without checking the row was still PENDING, so two overlapping runs could overwrite each other. It also uploaded the result inside the transaction that records it, and left the file behind when that write failed.
…e/fix/preprod-compare-transaction
ldelvoye
changed the base branch from
master
to
ldelvoye/fix/preprod-manual-compare-claim
November 9, 2026 22:13
ldelvoye
changed the base branch from
ldelvoye/fix/preprod-manual-compare-claim
to
master
November 9, 2026 22:16
ldelvoye
changed the base branch from
master
to
ldelvoye/ref/preprod-size-tasks-split
November 9, 2026 23:18
…x/preprod-compare-transaction
This branch was successfully deployed
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.
resolves INFRENG-977
Runs the preprod size comparison task without holding a database transaction across the file downloads, the diff and the result uploads.
The task used to wrap the whole run in one transaction, open for up to its 120 s deadline, with a savepoint per write inside it. It now computes and uploads every result first and records the rows in one short transaction at the end, so a run is still all-or-nothing: a failure or a deadline leaves no rows, as before. Worth weighing in review: two runs that overlap on the same pair now both compute the diff where the second used to block on the first's transaction, and the one that loses deletes its own result file. The manual and monitor paths claim their row with a conditional update for the same reason.