From 51c5a382cf033cc37b84c1d0f1ee4cb5addd185d Mon Sep 17 00:00:00 2001 From: Nathan VanBenschoten Date: Tue, 9 Aug 2022 11:54:08 -0400 Subject: [PATCH] kv: use max timestamp during below-Raft scan to gossip liveness This commit switches `MaybeGossipNodeLivenessRaftMuLocked` to evaluate its scan at the maximum timestamp instead of at the local node's HLC time. This ensures that we gossip the most recent liveness record, regardless of what timestamp it is written at. --- pkg/kv/kvserver/replica_gossip.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/kv/kvserver/replica_gossip.go b/pkg/kv/kvserver/replica_gossip.go index e9e2d4e798f5..96c40a425b30 100644 --- a/pkg/kv/kvserver/replica_gossip.go +++ b/pkg/kv/kvserver/replica_gossip.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv/kvserver/uncertainty" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/storage" + "github.com/cockroachdb/cockroach/pkg/util/hlc" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/errors" ) @@ -83,7 +84,9 @@ func (r *Replica) MaybeGossipNodeLivenessRaftMuLocked( } ba := roachpb.BatchRequest{} - ba.Timestamp = r.store.Clock().Now() + // Read at the maximum timestamp to ensure that we see the most recent + // liveness record, regardless of what timestamp it is written at. + ba.Timestamp = hlc.MaxTimestamp ba.Add(&roachpb.ScanRequest{RequestHeader: roachpb.RequestHeaderFromSpan(span)}) // Call evaluateBatch instead of Send to avoid reacquiring latches. rec := NewReplicaEvalContext(