client/v3: stop concurrency waits when session expires - #22387
ayushk-1801 wants to merge 1 commit into
Conversation
Signed-off-by: Ayush Kumar <ayush23162@iiitd.ac.in>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: ayushk-1801 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 @ayushk-1801. 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. |
|
@ivanvc Can you take a look at this and share your feedback? |
Description
When a mutex or election contender is waiting behind an older key,
waitDeletesonly watches the key ahead of it. If the waiting session expires during that time, its own lease-backed key is removed but the operation keeps waiting until the older key is deleted.This changes the wait logic to also watch the contender's own key and return as soon as that key disappears.
For mutexes this returns the existing
ErrSessionExpired. For elections it returnsErrElectionNotLeader.I also added regression coverage for both cases so the tests verify that the waiter returns while the current lock holder or election leader is still active.
Fixes #19597
Testing
go test ./client/v3/concurrency -count=1go test ./tests/integration/clientv3/concurrency -count=1make verify