diff --git a/db/view/view_update_generator.hh b/db/view/view_update_generator.hh index 628187f1d4..dbc8fd9b7f 100644 --- a/db/view/view_update_generator.hh +++ b/db/view/view_update_generator.hh @@ -50,7 +50,7 @@ using wait_for_all_updates = bool_class; class view_update_generator : public async_sharded_service { public: - static constexpr size_t registration_queue_size = 100; + static constexpr size_t registration_queue_size = 5; private: replica::database& _db; diff --git a/test/boost/view_build_test.cc b/test/boost/view_build_test.cc index 23b13ff511..631415f586 100644 --- a/test/boost/view_build_test.cc +++ b/test/boost/view_build_test.cc @@ -464,17 +464,17 @@ SEASTAR_TEST_CASE(test_view_update_generator) { BOOST_REQUIRE_EQUAL(view_update_generator.available_register_units(), db::view::view_update_generator::registration_queue_size); - auto register_and_check_semaphore = [&view_update_generator, t] (std::vector::iterator b, std::vector::iterator e) { - std::vector> register_futures; - for (auto it = b; it != e; ++it) { - register_futures.emplace_back(view_update_generator.register_staging_sstable(*it, t)); - } - const auto qsz = db::view::view_update_generator::registration_queue_size; - when_all(register_futures.begin(), register_futures.end()).get(); - REQUIRE_EVENTUALLY_EQUAL(view_update_generator.available_register_units(), qsz); - }; - register_and_check_semaphore(ssts.begin(), ssts.begin() + 10); - register_and_check_semaphore(ssts.begin() + 10, ssts.end()); + parallel_for_each(ssts.begin(), ssts.begin() + 10, [&] (shared_sstable& sst) { + return view_update_generator.register_staging_sstable(sst, t); + }).get(); + + BOOST_REQUIRE_EQUAL(view_update_generator.available_register_units(), db::view::view_update_generator::registration_queue_size); + + parallel_for_each(ssts.begin() + 10, ssts.end(), [&] (shared_sstable& sst) { + return view_update_generator.register_staging_sstable(sst, t); + }).get(); + + BOOST_REQUIRE_EQUAL(view_update_generator.available_register_units(), db::view::view_update_generator::registration_queue_size); auto select_by_p_id = e.prepare("SELECT * FROM t WHERE p = ?").get(); auto select_by_p_and_c_id = e.prepare("SELECT * FROM t WHERE p = ? and c = ?").get();