kv: conditionally handleReady after tick #138357
Open
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.
Related to #133885.
Related to #133216.
This commit adjusts
Replica.tick
to checkRawNode.HasReady
when deciding whether aReady
struct should be processed (Replica.handleRaftReady
) from the ticked replica. Previously, we would unconditionally pass throughReplica.handleRaftReady
after a tick, even if doing so was unnecessary and we knew ahead of time that we would hit this early return:cockroach/pkg/kv/kvserver/replica_raft.go
Line 1025 in 57aab73
This was mostly harmless in the past with quiescence and a cheap short-circuit in
handleRaftReady
, but has become more problematic recently for the following three reasons:Replica.handleRaftReady
has been getting more expensive, even in the no-op case. This is because of work done inReplica.updateProposalQuotaRaftMuLocked
and work done for replica admission control v2 (RACv2).Release note: None