storage_service: Re-gossiping snitch data in reconfiguration callback

Nowadays it's done inside snitch, and snitch needs to carry gossiper
refernece for that. There's an ongoing effort in de-globalizing snitch
and fixing its dependencies. This patch cuts this snitch->gossiper link
to facilitate the mentioned effort.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2022-09-19 11:33:40 +03:00
parent 932566d448
commit 47958a4b37
2 changed files with 5 additions and 14 deletions

View File

@@ -171,22 +171,8 @@ future<> gossiping_property_file_snitch::reload_configuration() {
local_s->set_my_dc_and_rack(_my_dc, _my_rack); local_s->set_my_dc_and_rack(_my_dc, _my_rack);
local_s->set_prefer_local(_prefer_local); local_s->set_prefer_local(_prefer_local);
}).then([this] { }).then([this] {
// FIXME -- tests don't start gossiper
if (!local().get_gossiper().local_is_initialized()) {
return make_ready_future<>();
}
return seastar::async([this] { return seastar::async([this] {
_reconfigured(); _reconfigured();
// spread the word...
container().invoke_on(0, [] (snitch_ptr& local_snitch_ptr) {
auto& gossiper = local_snitch_ptr.get_local_gossiper();
if (gossiper.is_enabled()) {
return gossiper.add_local_application_state(local_snitch_ptr->get_app_states());
}
return make_ready_future<>();
}).get();
}); });
}); });
} }

View File

@@ -3271,6 +3271,11 @@ future<> storage_service::snitch_reconfigured() {
tmptr->update_topology(endpoint, std::move(dr)); tmptr->update_topology(endpoint, std::move(dr));
return make_ready_future<>(); return make_ready_future<>();
}); });
if (_gossiper.is_enabled()) {
auto& snitch = locator::i_endpoint_snitch::get_local_snitch_ptr();
co_await _gossiper.add_local_application_state(snitch->get_app_states());
}
} }
void storage_service::init_messaging_service() { void storage_service::init_messaging_service() {