diff --git a/repair/repair.cc b/repair/repair.cc index d0c8a3ca14..79981bb55c 100644 --- a/repair/repair.cc +++ b/repair/repair.cc @@ -456,7 +456,7 @@ void repair_module::abort_all_repairs() { _aborted_pending_repairs = _pending_repairs; for (auto& x : _repairs) { auto& ri = x.second; - ri->abort(); + ri->abort_repair_info(); } rlogger.info0("Aborted {} repair job(s), aborted={}", _aborted_pending_repairs.size(), _aborted_pending_repairs); } @@ -540,6 +540,36 @@ get_sharder_for_tables(seastar::sharded& db, const sstring& k return last_s->get_sharder(); } +void shard_repair_task_impl::check_failed_ranges() { + _ri->check_failed_ranges(); +} + +void shard_repair_task_impl::abort_repair_info() noexcept { + _ri->abort_repair_info(); +} + +void shard_repair_task_impl::check_in_abort() { + _ri->check_in_abort(); +} + +void shard_repair_task_impl::check_in_shutdown() { + _ri->check_in_shutdown(); +} + +repair_neighbors shard_repair_task_impl::get_repair_neighbors(const dht::token_range& range) { + return _ri->get_repair_neighbors(range); +} + +size_t shard_repair_task_impl::ranges_size() { + return _ri->ranges_size(); +} + +// Repair a single local range, multiple column families. +// Comparable to RepairSession in Origin +future<> shard_repair_task_impl::repair_range(const dht::token_range& range, ::table_id table_id) { + return _ri->repair_range(range, table_id); +} + repair_info::repair_info(repair_service& repair, const sstring& keyspace_, locator::effective_replication_map_ptr erm_, @@ -574,7 +604,7 @@ repair_info::repair_info(repair_service& repair, , nr_ranges_total(ranges.size()) , _hints_batchlog_flushed(std::move(hints_batchlog_flushed)) { if (as != nullptr) { - _abort_subscription = as->subscribe([this] () noexcept { abort(); }); + _abort_subscription = as->subscribe([this] () noexcept { abort_repair_info(); }); } } @@ -593,7 +623,7 @@ void repair_info::check_failed_ranges() { } } -void repair_info::abort() noexcept { +void repair_info::abort_repair_info() noexcept { aborted = true; } @@ -630,7 +660,7 @@ future<> repair_info::repair_range(const dht::token_range& range, ::table_id tab auto status = format("failed: mandatory neighbor={} is not alive", node); rlogger.error("repair[{}]: Repair {} out of {} ranges, shard={}, keyspace={}, table={}, range={}, peers={}, live_peers={}, status={}", id.uuid(), ranges_index, ranges_size(), id.shard(), keyspace, table_names(), range, neighbors, live_neighbors, status); - abort(); + abort_repair_info(); return make_exception_future<>(std::runtime_error(format("Repair mandatory neighbor={} is not alive, keyspace={}, mandatory_neighbors={}", node, keyspace, mandatory_neighbors))); } diff --git a/repair/repair.hh b/repair/repair.hh index 325292af28..822f49574b 100644 --- a/repair/repair.hh +++ b/repair/repair.hh @@ -215,7 +215,7 @@ public: abort_source* as, bool hints_batchlog_flushed); void check_failed_ranges(); - void abort() noexcept; + void abort_repair_info() noexcept; void check_in_abort(); void check_in_shutdown(); repair_neighbors get_repair_neighbors(const dht::token_range& range); diff --git a/repair/repair_task.hh b/repair/repair_task.hh index 2b85b5057c..cb71e46e08 100644 --- a/repair/repair_task.hh +++ b/repair/repair_task.hh @@ -88,6 +88,26 @@ public: , _ri(std::move(ri)) , _ex(std::move(ex)) {} + + void check_failed_ranges(); + void abort_repair_info() noexcept; + void check_in_abort(); + void check_in_shutdown(); + repair_neighbors get_repair_neighbors(const dht::token_range& range); + void update_statistics(const repair_stats& stats) { + _ri->update_statistics(stats); + } + const std::vector& table_names() { + return _ri->table_names(); + } + + bool hints_batchlog_flushed() const { + return _ri->hints_batchlog_flushed(); + } + + future<> repair_range(const dht::token_range& range, table_id); + + size_t ranges_size(); protected: future<> run() override; };