From f47fc47b652cd9b14cd5928b80c348193fc7ab30 Mon Sep 17 00:00:00 2001 From: Erik Grinaker Date: Tue, 16 Jan 2024 10:56:42 +0000 Subject: [PATCH] kvserver: acquire `Replica.mu` when returning reproposal error Epic: none Release note: None --- pkg/kv/kvserver/replica_application_result.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/kv/kvserver/replica_application_result.go b/pkg/kv/kvserver/replica_application_result.go index ece3765973e0..561f74a9906c 100644 --- a/pkg/kv/kvserver/replica_application_result.go +++ b/pkg/kv/kvserver/replica_application_result.go @@ -271,13 +271,14 @@ func (r *Replica) tryReproposeWithNewLeaseIndex( // The tracker wants us to forward the request timestamp, but we can't // do that without re-evaluating, so give up. The error returned here // will go to back to DistSender, so send something it can digest. - err := kvpb.NewNotLeaseHolderError( + r.mu.RLock() + defer r.mu.RUnlock() + return kvpb.NewError(kvpb.NewNotLeaseHolderError( *r.mu.state.Lease, r.store.StoreID(), r.mu.state.Desc, "reproposal failed due to closed timestamp", - ) - return kvpb.NewError(err) + )) } // Some tests check for this log message in the trace. log.VEventf(ctx, 2, "retry: proposalIllegalLeaseIndex")