Skip to content

Commit 3e38a8c

Browse files
committed
kvserver: move merged replica ID to kvstorage
Epic: none Release note: none
1 parent 1ba2b8d commit 3e38a8c

File tree

6 files changed

+16
-15
lines changed

6 files changed

+16
-15
lines changed

pkg/kv/kvserver/kvstorage/destroy.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package kvstorage
77

88
import (
99
"context"
10+
"math"
1011

1112
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvserverpb"
1213
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/rditer"
@@ -29,6 +30,14 @@ const (
2930
// perhaps we should fix Pebble to handle large numbers of range tombstones in
3031
// an sstable better.
3132
ClearRangeThresholdPointKeys = 64
33+
34+
// MergedTombstoneReplicaID is the replica ID written into the RangeTombstone
35+
// for replicas of a range which is known to have been merged. This value
36+
// should prevent any messages from stale replicas of that range from ever
37+
// resurrecting merged replicas. Whenever merging or subsuming a replica we
38+
// know new replicas can never be created so this value is used even if we
39+
// don't know the current replica ID.
40+
MergedTombstoneReplicaID roachpb.ReplicaID = math.MaxInt32
3241
)
3342

3443
// ClearRangeDataOptions specify which parts of a Replica are to be destroyed.

pkg/kv/kvserver/replica_app_batch.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,15 +359,15 @@ func (b *replicaAppBatch) runPostAddTriggersReplicaOnly(
359359
rhsRepl.mu.Unlock()
360360
rhsRepl.readOnlyCmdMu.Unlock()
361361

362-
// Use math.MaxInt32 (mergedTombstoneReplicaID) as the nextReplicaID as an
362+
// Use math.MaxInt32 (MergedTombstoneReplicaID) as the nextReplicaID as an
363363
// extra safeguard against creating new replicas of the RHS. This isn't
364364
// required for correctness, since the merge protocol should guarantee that
365365
// no new replicas of the RHS can ever be created, but it doesn't hurt to
366366
// be careful.
367367
if err := kvstorage.DestroyReplica(
368368
ctx, b.batch, b.batch,
369369
rhsRepl.destroyInfoRaftMuLocked(),
370-
mergedTombstoneReplicaID,
370+
kvstorage.MergedTombstoneReplicaID,
371371
kvstorage.ClearRangeDataOptions{
372372
ClearReplicatedByRangeID: true,
373373
ClearUnreplicatedByRangeID: true,

pkg/kv/kvserver/replica_destroy.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ package kvserver
88
import (
99
"context"
1010
"fmt"
11-
"math"
1211

1312
"github.com/cockroachdb/cockroach/pkg/kv/kvpb"
1413
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/apply"
@@ -56,14 +55,6 @@ func (s destroyStatus) Removed() bool {
5655
return s.reason == destroyReasonRemoved
5756
}
5857

59-
// mergedTombstoneReplicaID is the replica ID written into the tombstone
60-
// for replicas which are part of a range which is known to have been merged.
61-
// This value should prevent any messages from stale replicas of that range from
62-
// ever resurrecting merged replicas. Whenever merging or subsuming a replica we
63-
// know new replicas can never be created so this value is used even if we
64-
// don't know the current replica ID.
65-
const mergedTombstoneReplicaID roachpb.ReplicaID = math.MaxInt32
66-
6758
// postDestroyRaftMuLocked is called after the replica destruction is durably
6859
// written to Pebble.
6960
func (r *Replica) postDestroyRaftMuLocked(ctx context.Context) error {

pkg/kv/kvserver/replica_gc_queue.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/cockroachdb/cockroach/pkg/kv"
1313
"github.com/cockroachdb/cockroach/pkg/kv/kvpb"
1414
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvserverbase"
15+
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvstorage"
1516
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/liveness/livenesspb"
1617
"github.com/cockroachdb/cockroach/pkg/raft/raftpb"
1718
"github.com/cockroachdb/cockroach/pkg/roachpb"
@@ -348,11 +349,11 @@ func (rgcq *replicaGCQueue) process(
348349
}
349350
}
350351

351-
// A tombstone is written with a value of mergedTombstoneReplicaID because
352+
// A tombstone is written with a value of MergedTombstoneReplicaID because
352353
// we know the range to have been merged. See the Merge case of
353354
// runPreApplyTriggers() for details.
354355
if err := repl.store.RemoveReplica(
355-
ctx, repl, mergedTombstoneReplicaID, "dangling subsume via replica GC queue",
356+
ctx, repl, kvstorage.MergedTombstoneReplicaID, "dangling subsume via replica GC queue",
356357
); err != nil {
357358
return false, err
358359
}

pkg/kv/kvserver/replica_raftstorage.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ func (r *Replica) clearSubsumedReplicaInMemoryData(
818818
// allowed in (perhaps not involving any of the RangeIDs known to the merge
819819
// but still touching its keyspace) and causing corruption.
820820
ph, err := r.store.removeInitializedReplicaRaftMuLocked(
821-
ctx, sr, mergedTombstoneReplicaID, "subsumed by snapshot",
821+
ctx, sr, kvstorage.MergedTombstoneReplicaID, "subsumed by snapshot",
822822
RemoveOptions{
823823
// The data was already destroyed by clearSubsumedReplicaDiskData.
824824
DestroyData: false,

pkg/kv/kvserver/snapshot_apply_prepare.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func (s *snapWriteBuilder) clearSubsumedReplicaDiskData(ctx context.Context) err
163163
UnreplicatedByRangeID: opts.ClearUnreplicatedByRangeID,
164164
})...)
165165
// NB: Actually clear RangeID local key spans.
166-
return kvstorage.DestroyReplica(ctx, reader, w, sub, mergedTombstoneReplicaID, opts)
166+
return kvstorage.DestroyReplica(ctx, reader, w, sub, kvstorage.MergedTombstoneReplicaID, opts)
167167
}); err != nil {
168168
return err
169169
}

0 commit comments

Comments
 (0)