group0_client: Add shared_token_metadata dependency

It will be needed later to get tablet_metadata from.
The dependency is "OK", shared_token_metadata is low-level sharded
service. Client already references db::system_keyspace, which in turn
references replica::database which, finally, references token_metadata

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2024-10-10 11:36:55 +03:00
parent a728695d10
commit 282cdfcfcc
4 changed files with 10 additions and 5 deletions

View File

@@ -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,

View File

@@ -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 {

View File

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

View File

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