From bbbeba103bbed77cdb89d561b80179b9ecfc5d49 Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Fri, 3 Feb 2023 16:22:59 +0300 Subject: [PATCH] view_builder: Add system_keyspace dependency The view builder updates system.scylla_views_builds_in_progress and .built_views tables and thus needs the system keyspace instance. Signed-off-by: Pavel Emelyanov --- db/view/view.cc | 3 ++- db/view/view_builder.hh | 4 +++- main.cc | 2 +- test/lib/cql_test_env.cc | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/db/view/view.cc b/db/view/view.cc index 6822746668..93e95d8d29 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -1742,8 +1742,9 @@ future<> mutate_MV( }); } -view_builder::view_builder(replica::database& db, 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) : _db(db) + , _sys_ks(sys_ks) , _sys_dist_ks(sys_dist_ks) , _mnotifier(mn) , _permit(_db.get_reader_concurrency_semaphore().make_tracking_only_permit(nullptr, "view_builder", db::no_timeout)) { diff --git a/db/view/view_builder.hh b/db/view/view_builder.hh index 2a25e0bb26..70fd2d76cd 100644 --- a/db/view/view_builder.hh +++ b/db/view/view_builder.hh @@ -29,6 +29,7 @@ namespace db { +class system_keyspace; class system_distributed_keyspace; } @@ -147,6 +148,7 @@ class view_builder final : public service::migration_listener::only_view_notific using base_to_build_step_type = std::unordered_map; replica::database& _db; + db::system_keyspace& _sys_ks; db::system_distributed_keyspace& _sys_dist_ks; service::migration_notifier& _mnotifier; reader_permit _permit; @@ -185,7 +187,7 @@ public: static constexpr size_t batch_memory_max = 1024*1024; public: - view_builder(replica::database&, db::system_distributed_keyspace&, service::migration_notifier&); + view_builder(replica::database&, db::system_keyspace&, db::system_distributed_keyspace&, service::migration_notifier&); view_builder(view_builder&&) = delete; /** diff --git a/main.cc b/main.cc index 3fc4c2a807..105d769977 100644 --- a/main.cc +++ b/main.cc @@ -1589,7 +1589,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_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)).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 fedf1812a6..bb6d54a055 100644 --- a/test/lib/cql_test_env.cc +++ b/test/lib/cql_test_env.cc @@ -894,7 +894,7 @@ public: }); sharded view_builder; - view_builder.start(std::ref(db), 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)).get(); view_builder.invoke_on_all([&mm] (db::view::view_builder& vb) { return vb.start(mm.local()); }).get();