Implement retry batch creation - #5685
Open
johnsimons wants to merge 1 commit into
Open
Conversation
johnsimons
force-pushed
the
john/retry_batches
branch
from
August 3, 2026 05:15
d65a439 to
2e71200
Compare
Adds RetryBatches and RetryBatchNowForwarding, and swaps the string RetryId on FailedMessageRetries for a Guid RetryBatchId plus StageAttempts. Membership is not stored twice: a message belongs to at most one batch, so RetryBatchId is the membership and FailureRetries is a query over it. Claiming is one insert if absent through the provider dialect, so there is no conflict to recover from in code. Renames the contract to IRetryBatchStore, away from document vocabulary.
johnsimons
force-pushed
the
john/retry_batches
branch
from
August 3, 2026 05:58
2e71200 to
bcce8df
Compare
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.
Retry batch creation for the SQL Server and PostgreSQL persisters: create a batch, claim its, move it to staging, adopt orphans, rebuild operation state. Staging and forwarding follow the next PR.
Decisions worth a look
FailedMessageRetries.RetryBatchIdthe membership andFailureRetriesis a query over it.Forwardingstatus without the one in flight, so the pointer is what recovery trusts.CreateBatch, so those throw.IRetryBatchStoreand members named for what they do.GetBatchesFor*returned no, so they are nowForEach*over messages, minus three parameters dead in both persisters.GetCurrentForwardingBatch
returns aForwardingRetryBatch` rather than a batch with an empty list.