fix race condition in updateCommittedIndex using CAS #21121
+2
−2
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.
What this PR does
Fix a potential race condition in
updateCommittedIndexcallback by using Compare-And-Swap (CAS) instead of check-then-act pattern.Why this change is needed
The previous implementation had a race condition:
In concurrent scenarios, this could cause the committed index to regress
Using CAS ensures atomic compare-and-swap:
// After (race-free)
cci := s.getCommittedIndex()
for ci > cci && !s.committedIndex.CompareAndSwap(cci, ci) {
cci = s.getCommittedIndex()
}
ensure the index only increases monotonically.
Signed-off-by: baycore [email protected]