view: Add view_builder -> view_update_generator dependency

The builder will need generator for view_builder::consumer in one of the
next patches.

The builder is a standalone service that starts one of the latest and no
other services need builder as their dependency.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2023-03-28 11:52:34 +03:00
parent 3fd12d6a0e
commit 3455b1aed8
4 changed files with 8 additions and 4 deletions

View File

@@ -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();
}

View File

@@ -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;
/**

View File

@@ -1603,7 +1603,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
static sharded<db::view::view_builder> 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();

View File

@@ -917,7 +917,7 @@ public:
});
sharded<db::view::view_builder> 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();