refactor: extract shared request-termination helper - #448
Draft
ubettigole wants to merge 1 commit into
Draft
Conversation
Extract the duplicated "transition a request to a terminal state and publish its terminal log" logic into a single TerminateRequest helper in submitqueue/core/request, and route conclude, dlq, cancel, and validate through it.
Changes:
- Add corerequest.TerminateRequest(ctx, store, registry, requestID, targetState, lastError, metadata) that performs the idempotent 3-way CAS (reconcile / already-terminal / diverged / not-found), publishes the terminal RequestLog, and returns a TerminationResult{Outcome, BeforeState, AfterState} plus a separate error. Version arithmetic stays caller-side and storage.ErrVersionMismatch is passed through as retryable.
- Replace terminalStateToStatus's switch with a terminalStatusByState map lookup.
- conclude: reconcile each batch member through the helper, keeping per-outcome logs and metrics at the call site. A request referenced by the batch but missing from the store stays a hard error (retry, eventually DLQ).
- dlq: failRequest now delegates to the helper, keeping its NotFound tolerance and its reconcile/divergence log messages.
- cancel: cancelRequest delegates to the helper (Cancelling to Cancelled); the helper's re-read reports divergence cleanly instead of a spurious version-mismatch retry.
- validate: on an expected rejection (duplicate detected or custom validator failure), terminate the request to Error and ack instead of dead-lettering it; genuine infra failures still return errors.
- Add table-driven tests for TerminateRequest and update the conclude, cancel, and validate tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Extract the duplicated "transition a request to a terminal state and publish its terminal log" logic into a single TerminateRequest helper in submitqueue/core/request, and route conclude, dlq, cancel, and validate through it.
Changes:
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Test Plan
Issues