diff --git a/repair/row_level.cc b/repair/row_level.cc index 4040735acb..67b921256f 100644 --- a/repair/row_level.cc +++ b/repair/row_level.cc @@ -297,13 +297,21 @@ mutation_reader repair_reader::make_reader( return rd; } case read_strategy::multishard_split: { + std::optional multishard_reader_buffer_size; + const auto& dbconfig = db.local().get_config(); + if (dbconfig.repair_multishard_reader_buffer_hint_size()) { + // Setting the repair buffer size as the multishard reader's buffer + // size helps avoid extra cross-shard round-trips and possible + // evict-recreate cycles. + multishard_reader_buffer_size = dbconfig.repair_multishard_reader_buffer_hint_size(); + } return make_multishard_streaming_reader(db, _schema, _permit, [this] { auto shard_range = _sharder.next(); if (shard_range) { return std::optional(dht::to_partition_range(*shard_range)); } return std::optional(); - }, compaction_time, {}); + }, compaction_time, multishard_reader_buffer_size); } case read_strategy::multishard_filter: { return make_filtering_reader(make_multishard_streaming_reader(db, _schema, _permit, _range, compaction_time, {}),