@@ -651,7 +651,7 @@ func (r *Replica) ticksSinceLastMessageRLocked() int64 {
651651// status where necessary.
652652func (r * Replica ) isRaftLeaderRLocked () bool {
653653 // Defensively check replicaID != 0.
654- return r .replicaID != 0 && r .replicaID == r .mu .leaderID
654+ return r .replicaID != 0 && r .replicaID == r .shMu .leaderID
655655}
656656
657657var errRemoved = errors .New ("replica removed" )
@@ -955,10 +955,11 @@ func (r *Replica) handleRaftReadyRaftMuLocked(
955955 var raftNodeBasicState replica_rac2.RaftNodeBasicState
956956 var logSnapshot raft.LogSnapshot
957957
958- r .mu .Lock ()
959- rac2ModeForReady := r .mu .currentRACv2Mode
960- leaderID := r .mu .leaderID
958+ rac2ModeForReady := r .shMu .currentRACv2Mode
959+ leaderID := r .shMu .leaderID
961960 lastLeaderID := leaderID
961+
962+ r .mu .Lock ()
962963 err := r .withRaftGroupLocked (func (raftGroup * raft.RawNode ) (bool , error ) {
963964 r .deliverLocalRaftMsgsRaftMuLockedReplicaMuLocked (ctx , raftGroup )
964965
@@ -976,7 +977,7 @@ func (r *Replica) handleRaftReadyRaftMuLocked(
976977 // Ready, and switch to pull mode after that.
977978 switchToPullModeAfterReady = true
978979 }
979- r .mu .currentRACv2Mode = rac2ModeToUse
980+ r .shMu .currentRACv2Mode = rac2ModeToUse
980981 }
981982 logSnapshot = raftGroup .LogSnapshot ()
982983 if hasReady = raftGroup .HasReady (); hasReady {
@@ -1256,11 +1257,11 @@ func (r *Replica) handleRaftReadyRaftMuLocked(
12561257 r .mu .Lock ()
12571258 r .asLogStorage ().updateStateRaftMuLockedMuLocked (state )
12581259 var becameLeader bool
1259- if r .mu .leaderID != leaderID {
1260- r .mu .leaderID = leaderID
1260+ if r .shMu .leaderID != leaderID {
1261+ r .shMu .leaderID = leaderID
12611262 // Clear the remote proposal set. Would have been nil already if not
12621263 // previously the leader.
1263- becameLeader = r . mu . leaderID == r .replicaID
1264+ becameLeader = leaderID == r .replicaID
12641265 }
12651266 r .mu .Unlock ()
12661267
@@ -1570,9 +1571,7 @@ func (r *Replica) processRACv2PiggybackedAdmitted(ctx context.Context) {
15701571func (r * Replica ) processRACv2RangeController (ctx context.Context ) {
15711572 r .raftMu .Lock ()
15721573 defer r .raftMu .Unlock ()
1573- // Can read Replica.mu.currentRACv2Mode since updates require both raftMu
1574- // and Replica.mu.
1575- mode := r .mu .currentRACv2Mode
1574+ mode := r .shMu .currentRACv2Mode
15761575 var logSnapshot raft.LogSnapshot
15771576 if mode == rac2 .MsgAppPull {
15781577 err := r .withRaftGroup (func (raftGroup * raft.RawNode ) (bool , error ) {
@@ -1585,7 +1584,7 @@ func (r *Replica) processRACv2RangeController(ctx context.Context) {
15851584 }
15861585 }
15871586 r .flowControlV2 .ProcessSchedulerEventRaftMuLocked (
1588- ctx , r .mu .currentRACv2Mode , logSnapshot )
1587+ ctx , r .shMu .currentRACv2Mode , logSnapshot )
15891588}
15901589
15911590// SendMsgApp implements rac2.MsgAppSender.
0 commit comments