diff --git a/main.cc b/main.cc index 343ed7d00d..d1429831c0 100644 --- a/main.cc +++ b/main.cc @@ -1511,7 +1511,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl // group0 client exists only on shard 0. // The client has to be created before `stop_raft` since during // destruction it has to exist until raft_gr.stop() completes. - service::raft_group0_client group0_client{raft_gr.local(), sys_ks.local(), maintenance_mode_enabled{cfg->maintenance_mode()}}; + service::raft_group0_client group0_client{raft_gr.local(), sys_ks.local(), token_metadata.local(), maintenance_mode_enabled{cfg->maintenance_mode()}}; service::raft_group0 group0_service{ stop_signal.as_local_abort_source(), raft_gr.local(), messaging, diff --git a/service/raft/raft_group0_client.cc b/service/raft/raft_group0_client.cc index cd4e823e42..247b8e4a29 100644 --- a/service/raft/raft_group0_client.cc +++ b/service/raft/raft_group0_client.cc @@ -338,8 +338,8 @@ group0_command raft_group0_client::prepare_command(Command change, std::string_v return group0_cmd; } -raft_group0_client::raft_group0_client(service::raft_group_registry& raft_gr, db::system_keyspace& sys_ks, maintenance_mode_enabled maintenance_mode) - : _raft_gr(raft_gr), _sys_ks(sys_ks), _maintenance_mode(maintenance_mode) { +raft_group0_client::raft_group0_client(service::raft_group_registry& raft_gr, db::system_keyspace& sys_ks, locator::shared_token_metadata& tm, maintenance_mode_enabled maintenance_mode) + : _raft_gr(raft_gr), _sys_ks(sys_ks), _token_metadata(tm), _maintenance_mode(maintenance_mode) { } size_t raft_group0_client::max_command_size() const { diff --git a/service/raft/raft_group0_client.hh b/service/raft/raft_group0_client.hh index 7b6e6ca8c2..3a95878c00 100644 --- a/service/raft/raft_group0_client.hh +++ b/service/raft/raft_group0_client.hh @@ -28,6 +28,10 @@ #include "db/system_keyspace.hh" #include "service/maintenance_mode.hh" +namespace locator { +class shared_token_metadata; +} + namespace service { // Obtaining this object means that all previously finished operations on group 0 are visible on this node. @@ -72,6 +76,7 @@ public: class raft_group0_client { service::raft_group_registry& _raft_gr; db::system_keyspace& _sys_ks; + locator::shared_token_metadata& _token_metadata; // See `group0_guard::impl` for explanation of the purpose of these locks. semaphore _read_apply_mutex = semaphore(1); @@ -104,7 +109,7 @@ class raft_group0_client { }; public: - raft_group0_client(service::raft_group_registry&, db::system_keyspace&, maintenance_mode_enabled); + raft_group0_client(service::raft_group_registry&, db::system_keyspace&, locator::shared_token_metadata&, maintenance_mode_enabled); // Call after `system_keyspace` is initialized. future<> init(); diff --git a/test/lib/cql_test_env.cc b/test/lib/cql_test_env.cc index 94f3cbd8ec..1537779bce 100644 --- a/test/lib/cql_test_env.cc +++ b/test/lib/cql_test_env.cc @@ -801,7 +801,7 @@ private: auto stop_mapreduce_service = defer([this] { _mapreduce_service.stop().get(); }); // gropu0 client exists only on shard 0 - service::raft_group0_client group0_client(_group0_registry.local(), _sys_ks.local(), maintenance_mode_enabled::no); + service::raft_group0_client group0_client(_group0_registry.local(), _sys_ks.local(), _token_metadata.local(), maintenance_mode_enabled::no); _mm.start(std::ref(_mnotifier), std::ref(_feature_service), std::ref(_ms), std::ref(_proxy), std::ref(_gossiper), std::ref(group0_client), std::ref(_sys_ks)).get(); auto stop_mm = defer([this] { _mm.stop().get(); });