snitch, storage_service: Move reconnect to internal_ip kick

The same thing as in previous patch -- when gossiper issues
on_join/_change notification, storage service can kick messaging
service to update its internal_ip cache and reconnect to the peer.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2022-07-01 15:52:40 +03:00
parent 1bf8b0dd92
commit b91f7e9ec4
3 changed files with 20 additions and 16 deletions

View File

@@ -201,22 +201,7 @@ future<> reconnectable_snitch_helper::reconnect(gms::inet_address public_address
}
future<> reconnectable_snitch_helper::reconnect(gms::inet_address public_address, gms::inet_address local_address) {
auto& sn_ptr = locator::i_endpoint_snitch::get_local_snitch_ptr();
netw::messaging_service& ms = sn_ptr.get_local_gossiper().get_local_messaging();
if (sn_ptr->get_datacenter(public_address) == _local_dc &&
ms.get_preferred_ip(public_address) != local_address) {
//
// ...then update messaging_service cache and reset the currently
// open connections to this endpoint on all shards...
//
co_await ms.container().invoke_on_all([public_address, local_address] (auto& local_ms) {
local_ms.cache_preferred_ip(public_address, local_address);
local_ms.remove_rpc_client(netw::msg_addr(public_address));
});
logger().debug("Initiated reconnect to an Internal IP {} for the {}", local_address, public_address);
}
return make_ready_future<>();
}
reconnectable_snitch_helper::reconnectable_snitch_helper(sstring local_dc)