Skip to content

Commit b927461

Browse files
committed
kvserver: propagate ReadCategory to IterateReplicaKeySpans
Extend rditer.IterateReplicaKeySpans to accept a ReadCategory and propagate it to the constructed engine iterator. Most significantly, this ensures that the scan to read a Raft snapshot's data is appropriately labeled with the fs.RangeSnapshotReadCategory category. Informs #158017. Epic: none Release note: none
1 parent 2967b49 commit b927461

File tree

8 files changed

+21
-17
lines changed

8 files changed

+21
-17
lines changed

pkg/cli/debug.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ func runDebugRangeData(cmd *cobra.Command, args []string) error {
497497
defer snapshot.Close()
498498

499499
var results int
500-
return rditer.IterateReplicaKeySpans(cmd.Context(), &desc, snapshot, rditer.SelectOpts{
500+
return rditer.IterateReplicaKeySpans(cmd.Context(), &desc, snapshot, fs.UnknownReadCategory, rditer.SelectOpts{
501501
Ranged: rditer.SelectRangedOptions{
502502
SystemKeys: true,
503503
LockTable: true,

pkg/kv/kvserver/client_merge_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3913,7 +3913,7 @@ func TestStoreRangeMergeRaftSnapshot(t *testing.T) {
39133913
}
39143914
}
39153915

3916-
require.NoError(t, rditer.IterateReplicaKeySpans(ctx, inSnap.Desc, snapReader, rditer.SelectOpts{
3916+
require.NoError(t, rditer.IterateReplicaKeySpans(ctx, inSnap.Desc, snapReader, fs.ReplicationReadCategory, rditer.SelectOpts{
39173917
Ranged: rditer.SelectRangedOptions{
39183918
SystemKeys: true,
39193919
LockTable: true,

pkg/kv/kvserver/kv_snapshot_strategy.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/cockroachdb/cockroach/pkg/roachpb"
1616
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
1717
"github.com/cockroachdb/cockroach/pkg/storage"
18+
"github.com/cockroachdb/cockroach/pkg/storage/fs"
1819
"github.com/cockroachdb/cockroach/pkg/util/admission"
1920
"github.com/cockroachdb/cockroach/pkg/util/log"
2021
"github.com/cockroachdb/cockroach/pkg/util/tracing"
@@ -407,7 +408,7 @@ func (kvSS *kvBatchSnapshotStrategy) Send(
407408
}
408409
return err
409410
}
410-
if err := rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, rditer.SelectOpts{
411+
if err := rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, fs.RangeSnapshotReadCategory, rditer.SelectOpts{
411412
Ranged: rditer.SelectRangedOptions{
412413
SystemKeys: true,
413414
LockTable: true,
@@ -539,7 +540,7 @@ func (kvSS *kvBatchSnapshotStrategy) Send(
539540
//
540541
// See: https://github.com/cockroachdb/cockroach/issues/142673
541542
transitionFromSharedToRegularReplicate = true
542-
err = rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, rditer.SelectOpts{
543+
err = rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, fs.RangeSnapshotReadCategory, rditer.SelectOpts{
543544
Ranged: rditer.SelectRangedOptions{
544545
UserKeys: true,
545546
},

pkg/kv/kvserver/raftlog/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ go_library(
2222
"//pkg/roachpb",
2323
"//pkg/storage",
2424
"//pkg/storage/enginepb",
25+
"//pkg/storage/fs",
2526
"//pkg/util/buildutil",
2627
"//pkg/util/encoding",
2728
"//pkg/util/iterutil",

pkg/kv/kvserver/rditer/replica_data_iter.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ func IterateReplicaKeySpans(
421421
ctx context.Context,
422422
desc *roachpb.RangeDescriptor,
423423
reader storage.Reader,
424+
readCategory fs.ReadCategory,
424425
opts SelectOpts,
425426
visitor func(storage.EngineIterator, roachpb.Span) error,
426427
) error {
@@ -433,9 +434,10 @@ func IterateReplicaKeySpans(
433434
for _, span := range spans {
434435
err := func() error {
435436
iter, err := reader.NewEngineIterator(ctx, storage.IterOptions{
436-
KeyTypes: storage.IterKeyTypePointsAndRanges,
437-
LowerBound: span.Key,
438-
UpperBound: span.EndKey,
437+
KeyTypes: storage.IterKeyTypePointsAndRanges,
438+
LowerBound: span.Key,
439+
UpperBound: span.EndKey,
440+
ReadCategory: readCategory,
439441
})
440442
if err != nil {
441443
return err

pkg/kv/kvserver/rditer/replica_data_iter_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func verifyIterateReplicaKeySpans(
169169
})
170170

171171
require.NoError(t, IterateReplicaKeySpans(
172-
context.Background(), desc, readWriter, selOpts,
172+
context.Background(), desc, readWriter, fs.UnknownReadCategory, selOpts,
173173
func(iter storage.EngineIterator, span roachpb.Span) error {
174174
var err error
175175
for ok := true; ok && err == nil; ok, err = iter.NextEngineKey() {
@@ -497,7 +497,7 @@ func TestReplicaDataIteratorGlobalRangeKey(t *testing.T) {
497497

498498
var actualSpans []roachpb.Span
499499
require.NoError(t, IterateReplicaKeySpans(
500-
context.Background(), &desc, snapshot, selOpts,
500+
context.Background(), &desc, snapshot, fs.UnknownReadCategory, selOpts,
501501
func(iter storage.EngineIterator, span roachpb.Span) error {
502502
// We should never see any point keys.
503503
hasPoint, hasRange := iter.HasPointAndRange()
@@ -554,7 +554,7 @@ func BenchmarkReplicaEngineDataIterator(b *testing.B) {
554554
}
555555

556556
func benchReplicaEngineDataIterator(b *testing.B, numRanges, numKeysPerRange, valueSize int) {
557-
ctx := context.Background()
557+
ctx := b.Context()
558558

559559
// Set up ranges.
560560
var descs []roachpb.RangeDescriptor
@@ -586,7 +586,7 @@ func benchReplicaEngineDataIterator(b *testing.B, numRanges, numKeysPerRange, va
586586
for _, desc := range descs {
587587
var keyBuf roachpb.Key
588588
keySpans := MakeAllKeySpans(&desc)
589-
for i := 0; i < numKeysPerRange; i++ {
589+
for i := range numKeysPerRange {
590590
keyBuf = append(keyBuf[:0], keySpans[i%len(keySpans)].Key...)
591591
keyBuf = append(keyBuf, 0, 0, 0, 0)
592592
binary.BigEndian.PutUint32(keyBuf[len(keyBuf)-4:], uint32(i))
@@ -602,11 +602,9 @@ func benchReplicaEngineDataIterator(b *testing.B, numRanges, numKeysPerRange, va
602602
snapshot := eng.NewSnapshot()
603603
defer snapshot.Close()
604604

605-
b.ResetTimer()
606-
607-
for i := 0; i < b.N; i++ {
605+
for b.Loop() {
608606
for _, desc := range descs {
609-
err := IterateReplicaKeySpans(context.Background(), &desc, snapshot,
607+
err := IterateReplicaKeySpans(b.Context(), &desc, snapshot, fs.UnknownReadCategory,
610608
SelectOpts{
611609
Ranged: SelectRangedOptions{
612610
RSpan: desc.RSpan(),

pkg/kv/kvserver/replica_learner_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/cockroachdb/cockroach/pkg/roachpb"
3030
"github.com/cockroachdb/cockroach/pkg/server/serverpb"
3131
"github.com/cockroachdb/cockroach/pkg/storage"
32+
"github.com/cockroachdb/cockroach/pkg/storage/fs"
3233
"github.com/cockroachdb/cockroach/pkg/testutils"
3334
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
3435
"github.com/cockroachdb/cockroach/pkg/testutils/skip"
@@ -2235,7 +2236,7 @@ func getExpectedSnapshotSizeBytes(
22352236
ReplicatedByRangeID: true,
22362237
UnreplicatedByRangeID: false,
22372238
}
2238-
err = rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, selOpts, func(iter storage.EngineIterator, _ roachpb.Span) error {
2239+
err = rditer.IterateReplicaKeySpans(ctx, snap.State.Desc, snap.EngineSnap, fs.ReplicationReadCategory, selOpts, func(iter storage.EngineIterator, _ roachpb.Span) error {
22392240
var err error
22402241
for ok := true; ok && err == nil; ok, err = iter.NextEngineKey() {
22412242
hasPoint, hasRange := iter.HasPointAndRange()

pkg/kv/kvserver/replica_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import (
5858
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
5959
"github.com/cockroachdb/cockroach/pkg/storage"
6060
"github.com/cockroachdb/cockroach/pkg/storage/enginepb"
61+
"github.com/cockroachdb/cockroach/pkg/storage/fs"
6162
"github.com/cockroachdb/cockroach/pkg/testutils"
6263
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
6364
"github.com/cockroachdb/cockroach/pkg/util/admission/admissionpb"
@@ -7017,7 +7018,7 @@ func TestReplicaDestroy(t *testing.T) {
70177018
UnreplicatedByRangeID: true,
70187019
}
70197020
require.NoError(t, rditer.IterateReplicaKeySpans(
7020-
ctx, tc.repl.Desc(), engSnapshot, selOpts,
7021+
ctx, tc.repl.Desc(), engSnapshot, fs.ReplicationReadCategory, selOpts,
70217022
func(iter storage.EngineIterator, _ roachpb.Span) error {
70227023
var err error
70237024
for ok := true; ok && err == nil; ok, err = iter.NextEngineKey() {

0 commit comments

Comments
 (0)