diff --git a/db/view/view.cc b/db/view/view.cc index af4ce9de2b..f87bdd150a 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -906,7 +906,8 @@ future view_update_builder::stop() const { } future> view_update_builder::build_some() { - return advance_all().then([this] (stop_iteration ignored) { + auto _ = co_await advance_all(); + // FIXME: indentation bool do_advance_updates = false; bool do_advance_existings = false; if (_update && _update->is_partition_start()) { @@ -919,22 +920,18 @@ future> view_update_builder::b do_advance_existings = true; } if (do_advance_updates) { - return do_advance_existings ? advance_all() : advance_updates(); + co_await (do_advance_existings ? advance_all() : advance_updates()); } else if (do_advance_existings) { - return advance_existings(); + co_await advance_existings(); } - return make_ready_future(stop_iteration::no); - }).then([this] (stop_iteration ignored) { - return repeat([this] { - return this->on_results(); - }); - }).then([this] { + + while (co_await on_results() == stop_iteration::no) {}; + utils::chunked_vector mutations; for (auto& update : _view_updates) { update.move_to(mutations); } - return mutations; - }); + co_return mutations; } void view_update_builder::generate_update(clustering_row&& update, std::optional&& existing) {