Skip to content

Commit 2c6916a

Browse files
craig[bot]pav-kv
andcommitted
Merge #144615
144615: kvserver: use WriteBatch instead of NewUnindexedBatch r=tbg a=pav-kv This PR replaces a few uses of `Engine.NewUnindexedBatch()` with `Engine.NewWriteBatch()`, in places where reading is not needed. Epic: CRDB-46488 Co-authored-by: Pavel Kalinnikov <[email protected]>
2 parents 47a4227 + af4a003 commit 2c6916a

File tree

6 files changed

+14
-12
lines changed

6 files changed

+14
-12
lines changed

pkg/kv/kvserver/logstore/logstore.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ func Compact(
476476
prev kvserverpb.RaftTruncatedState,
477477
next kvserverpb.RaftTruncatedState,
478478
loader StateLoader,
479-
readWriter storage.ReadWriter,
479+
writer storage.Writer,
480480
) error {
481481
if next.Index <= prev.Index {
482482
// TODO(pav-kv): return an assertion failure error.
@@ -490,7 +490,7 @@ func Compact(
490490
if numTruncatedEntries >= raftLogTruncationClearRangeThreshold {
491491
start := prefixBuf.RaftLogKey(prev.Index + 1).Clone()
492492
end := prefixBuf.RaftLogKey(next.Index + 1).Clone() // end is exclusive
493-
if err := readWriter.ClearRawRange(start, end, true, false); err != nil {
493+
if err := writer.ClearRawRange(start, end, true, false); err != nil {
494494
return errors.Wrapf(err,
495495
"unable to clear truncated Raft entries for %+v after index %d",
496496
next, prev.Index)
@@ -500,7 +500,7 @@ func Compact(
500500
// allocating when constructing Raft log keys (16 bytes).
501501
prefix := prefixBuf.RaftLogPrefix()
502502
for idx := prev.Index + 1; idx <= next.Index; idx++ {
503-
if err := readWriter.ClearUnversioned(
503+
if err := writer.ClearUnversioned(
504504
keys.RaftLogKeyFromPrefix(prefix, idx),
505505
storage.ClearOptions{},
506506
); err != nil {
@@ -517,9 +517,8 @@ func Compact(
517517
}
518518
value.InitChecksum(key)
519519

520-
if _, err := storage.MVCCPut(
521-
ctx, readWriter, key, hlc.Timestamp{}, value,
522-
storage.MVCCWriteOptions{Category: fs.ReplicationReadCategory},
520+
if _, err := storage.MVCCBlindPut(
521+
ctx, writer, key, hlc.Timestamp{}, value, storage.MVCCWriteOptions{},
523522
); err != nil {
524523
return errors.Wrap(err, "unable to write RaftTruncatedState")
525524
}

pkg/kv/kvserver/raft_log_truncator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ func (t *raftLogTruncator) tryEnactTruncations(
545545
}
546546
// Do the truncation of persistent raft entries, specified by enactIndex
547547
// (this subsumes all the preceding queued truncations).
548-
batch := t.store.getEngine().NewUnindexedBatch()
548+
batch := t.store.getEngine().NewWriteBatch()
549549
defer batch.Close()
550550
if err := handleTruncatedStateBelowRaftPreApply(ctx, truncState,
551551
pendingTruncs.mu.truncs[enactIndex].RaftTruncatedState,

pkg/kv/kvserver/raftstorebench/engine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func growMemtable(t T, eng storage.Engine, target int64) {
8989
// memtable size, and doubles with each flush. We'll have reached any
9090
// reasonable memtable size in well under 20 iterations.
9191
for memtableSize := int64(256 * 1024); memtableSize < target; memtableSize *= 2 {
92-
b := eng.NewUnindexedBatch()
92+
b := eng.NewWriteBatch()
9393
require.NoError(t, b.PutUnversioned(roachpb.Key("zoo"), nil))
9494
require.NoError(t, b.Commit(false)) // this works even when WAL is off
9595

@@ -98,7 +98,7 @@ func growMemtable(t T, eng storage.Engine, target int64) {
9898
}
9999

100100
// Delete the key.
101-
b := eng.NewUnindexedBatch()
101+
b := eng.NewWriteBatch()
102102
require.NoError(t, b.ClearUnversioned(roachpb.Key("zoo"), storage.ClearOptions{}))
103103
require.NoError(t, b.Commit(false))
104104

pkg/kv/kvserver/raftstorebench/worker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (w *worker) doTruncForReplica(t T, r *replicaWriteState, truncIndex uint64)
8383
logf(t, "r%d: truncIndex %d, nextIndex: %d", r.rangeID, truncIndex,
8484
r.nextRaftLogIndex)
8585
}
86-
raftBatch := w.o.raftEng.NewUnindexedBatch()
86+
raftBatch := w.o.raftEng.NewWriteBatch()
8787
for i := r.truncatedLogIndex + 1; i <= truncIndex; i++ {
8888
key := r.rangeIDPrefixBuf.RaftLogKey(kvpb.RaftIndex(i))
8989
if w.o.cfg.SingleDel {

pkg/kv/kvserver/replica_application_state_machine.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ func (sm *replicaStateMachine) NewBatch() apply.Batch {
143143
// make it safer.
144144
b.r = r
145145
b.applyStats = &sm.applyStats
146+
// TODO(#144627): most commands do not need to read. Use NewWriteBatch because
147+
// it is more efficient. If there are exceptions, sparingly use NewReader or
148+
// NewBatch (if it needs to read its own writes, which is unlikely).
146149
b.batch = r.store.TODOEngine().NewBatch()
147150
r.mu.RLock()
148151
b.state = r.shMu.state

pkg/kv/kvserver/replica_raft.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2983,9 +2983,9 @@ func handleTruncatedStateBelowRaftPreApply(
29832983
prev kvserverpb.RaftTruncatedState,
29842984
next kvserverpb.RaftTruncatedState,
29852985
loader logstore.StateLoader,
2986-
readWriter storage.ReadWriter,
2986+
writer storage.Writer,
29872987
) error {
2988-
return logstore.Compact(ctx, prev, next, loader, readWriter)
2988+
return logstore.Compact(ctx, prev, next, loader, writer)
29892989
}
29902990

29912991
// shouldCampaignAfterConfChange returns true if the current replica should

0 commit comments

Comments
 (0)