diff --git a/db/view/view_update_generator.hh b/db/view/view_update_generator.hh index dbc8fd9b7f..628187f1d4 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 = 5; + static constexpr size_t registration_queue_size = 100; private: replica::database& _db; diff --git a/test/boost/view_build_test.cc b/test/boost/view_build_test.cc index 631415f586..23b13ff511 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); - 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 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()); 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();