ordering: do not automatically resubmit mutable transactions#22122
ordering: do not automatically resubmit mutable transactions#22122AkashKumar7902 wants to merge 1 commit into
Conversation
…violation Signed-off-by: Akash Kumar <meakash7902@gmail.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: AkashKumar7902 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Hi @AkashKumar7902. Thanks for your PR. I'm waiting for a etcd-io member to verify that this patch is reasonable to test. If it is, they should reply with Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Refs #22086
What changed
Why
txnOrdering.Commitcurrently retries any successful response whose revision is older than the wrapper's previously observed revision when the violation handler returns nil. If either transaction branch can write, the first execution may already have applied a mutation. Replaying the body can duplicate writes or watch events, or choose a different branch after intervening state changes.Both branches must be read-only before retrying because the transaction comparison may produce a different result on the next endpoint. The violation handler is still called first, and its errors are still returned unchanged.
Impact
Read-only transaction retry behavior is unchanged. Potentially mutable transactions are reported to the violation handler but are not automatically replayed after a successful response. This does not add or change any exported API.
Backport candidate:
release-3.7andrelease-3.6.Testing
Commitimplementation.git diff --checkcd client/v3 && go test ./ordering -count=20cd client/v3 && go test -race ./ordering -count=1cd client/v3 && go test ./... -count=1cd client/v3 && go vet ./orderinggolangci-lintforclient/v3/ordering: 0 issues.