fix(lockservice): fence stale binds by allocator epoch#24906
fix(lockservice): fence stale binds by allocator epoch#24906iamlinjunhong wants to merge 6 commits into
Conversation
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
aptend
left a comment
There was a problem hiding this comment.
Review Result
Approved. I did not find any blocking issues in this PR.
What I Checked
GetBindandKeepLockTableBindpropagate the allocator epoch to CN.- CN stale-bind purge follows the existing
LockTable.Versionsemantics: cached binds withVersion < observed allocator epochare stale allocator state. - main-branch bind-change handling was reviewed against the epoch purge path, including waiter cleanup and commit-side bind validation.
- The added tests cover get-bind refresh, keepalive failure/epoch refresh, concurrent observation, remote/proxy bind purge, and waiter cleanup.
Local Verification
git diff --check origin/main...HEAD
go test ./pkg/lockservice -run 'Test(CommitDetectsStaleLocalBindAfterAllocatorRestart|AllocatorVersionZeroKeepsLocalBinds|AllocatorObserverDoesNotPurgeSameEpochBindVersions|GetBindAllowsRegressedAllocatorVersionWithoutPurging|KeepaliveEpochPurgeKeepsGroupMovePop|AllocatorObserverPurgesRemoteAndProxyLockTables|AllocatorObserverConcurrentKeepaliveAndGetBind|AllocatorObserverCloseWaitersOnStaleLocalBind)$'
timeout 180s go test ./pkg/lockserviceNote: the full go test ./pkg/lockservice hit the 180s local timeout without output. The PR-specific test set passed locally, and CI is green.
|
fixed the lockservice allocator-restart fencing issue across d4-24896, d3-24896, and m-24896. |
What type of PR is this?
Which issue(s) this PR fixes:
issue #24896
What this PR does / why we need it:
fix(lockservice): fence stale binds by allocator epoch