Skip to content

client/v3: stop concurrency waits when session expires - #22387

Open
ayushk-1801 wants to merge 1 commit into
etcd-io:mainfrom
ayushk-1801:fix-session-expiry-wait-19597
Open

ayushk-1801 wants to merge 1 commit into
etcd-io:mainfrom
ayushk-1801:fix-session-expiry-wait-19597

Conversation

@ayushk-1801

Copy link
Copy Markdown

Description

When a mutex or election contender is waiting behind an older key, waitDeletes only 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 returns ErrElectionNotLeader.

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=1
  • go test ./tests/integration/clientv3/concurrency -count=1
  • repeated the new mutex and election regression tests 50 times
  • ran the relevant tests with the race detector
  • make verify

Signed-off-by: Ayush Kumar <ayush23162@iiitd.ac.in>
@kubernetes-prow

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: ayushk-1801
Once this PR has been reviewed and has the lgtm label, please assign siyuanfoundation for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubernetes-prow

Copy link
Copy Markdown

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 /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions 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.

@ayushk-1801

Copy link
Copy Markdown
Author

@ivanvc Can you take a look at this and share your feedback?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

Early termination on session expiration to avoid unnecessary lock waiting

1 participant