diff --git a/db/view/view.cc b/db/view/view.cc index 879ec95c16..01515248e0 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -1746,11 +1746,12 @@ future<> mutate_MV( }); } -view_builder::view_builder(replica::database& db, db::system_keyspace& sys_ks, db::system_distributed_keyspace& sys_dist_ks, service::migration_notifier& mn) +view_builder::view_builder(replica::database& db, db::system_keyspace& sys_ks, db::system_distributed_keyspace& sys_dist_ks, service::migration_notifier& mn, view_update_generator& vug) : _db(db) , _sys_ks(sys_ks) , _sys_dist_ks(sys_dist_ks) , _mnotifier(mn) + , _vug(vug) , _permit(_db.get_reader_concurrency_semaphore().make_tracking_only_permit(nullptr, "view_builder", db::no_timeout, {})) { setup_metrics(); } diff --git a/db/view/view_builder.hh b/db/view/view_builder.hh index 70fd2d76cd..f032099028 100644 --- a/db/view/view_builder.hh +++ b/db/view/view_builder.hh @@ -53,6 +53,8 @@ class exponential_backoff_retry; namespace db::view { +class view_update_generator; + /** * The view_builder is a sharded service responsible for building all defined materialized views. * This process entails walking over the existing data in a given base table, and using it to @@ -151,6 +153,7 @@ class view_builder final : public service::migration_listener::only_view_notific db::system_keyspace& _sys_ks; db::system_distributed_keyspace& _sys_dist_ks; service::migration_notifier& _mnotifier; + view_update_generator& _vug; reader_permit _permit; base_to_build_step_type _base_to_build_step; base_to_build_step_type::iterator _current_step = _base_to_build_step.end(); @@ -187,7 +190,7 @@ public: static constexpr size_t batch_memory_max = 1024*1024; public: - view_builder(replica::database&, db::system_keyspace&, db::system_distributed_keyspace&, service::migration_notifier&); + view_builder(replica::database&, db::system_keyspace&, db::system_distributed_keyspace&, service::migration_notifier&, view_update_generator& vug); view_builder(view_builder&&) = delete; /** diff --git a/main.cc b/main.cc index c95948464f..ec8d16e836 100644 --- a/main.cc +++ b/main.cc @@ -1603,7 +1603,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl static sharded view_builder; if (cfg->view_building()) { supervisor::notify("starting the view builder"); - view_builder.start(std::ref(db), std::ref(sys_ks), std::ref(sys_dist_ks), std::ref(mm_notifier)).get(); + view_builder.start(std::ref(db), std::ref(sys_ks), std::ref(sys_dist_ks), std::ref(mm_notifier), std::ref(view_update_generator)).get(); view_builder.invoke_on_all([&mm] (db::view::view_builder& vb) { return vb.start(mm.local()); }).get(); diff --git a/test/lib/cql_test_env.cc b/test/lib/cql_test_env.cc index a3650b6339..6f1bff4968 100644 --- a/test/lib/cql_test_env.cc +++ b/test/lib/cql_test_env.cc @@ -917,7 +917,7 @@ public: }); sharded view_builder; - view_builder.start(std::ref(db), std::ref(sys_ks), std::ref(sys_dist_ks), std::ref(mm_notif)).get(); + view_builder.start(std::ref(db), std::ref(sys_ks), std::ref(sys_dist_ks), std::ref(mm_notif), std::ref(view_update_generator)).get(); view_builder.invoke_on_all([&mm] (db::view::view_builder& vb) { return vb.start(mm.local()); }).get();