snitch: Introduce and use get_location() method
There are some places out there that generate locator::endpoint_dc_rack pair out of snitch's get_datacenter() and get_rack() calls. Generalize those with snitch's new method. It will also be used by next patch. Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#include <boost/signals2.hpp>
|
||||
#include <boost/signals2/dummy_mutex.hpp>
|
||||
|
||||
#include "locator/types.hh"
|
||||
#include "gms/inet_address.hh"
|
||||
#include "inet_address_vectors.hh"
|
||||
#include "gms/versioned_value.hh"
|
||||
@@ -70,6 +71,13 @@ public:
|
||||
*/
|
||||
virtual sstring get_datacenter() const = 0;
|
||||
|
||||
locator::endpoint_dc_rack get_location() const {
|
||||
return locator::endpoint_dc_rack{
|
||||
.dc = get_datacenter(),
|
||||
.rack = get_rack(),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* returns whatever info snitch wants to gossip
|
||||
*/
|
||||
|
||||
2
main.cc
2
main.cc
@@ -852,7 +852,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
|
||||
supervisor::notify("starting tokens manager");
|
||||
locator::token_metadata::config tm_cfg;
|
||||
tm_cfg.topo_cfg.this_endpoint = utils::fb_utilities::get_broadcast_address();
|
||||
tm_cfg.topo_cfg.local_dc_rack = { snitch.local()->get_datacenter(), snitch.local()->get_rack() };
|
||||
tm_cfg.topo_cfg.local_dc_rack = snitch.local()->get_location();
|
||||
if (snitch.local()->get_name() == "org.apache.cassandra.locator.SimpleSnitch") {
|
||||
//
|
||||
// Simple snitch wants sort_by_proximity() not to reorder nodes anyhow
|
||||
|
||||
@@ -5653,12 +5653,7 @@ future<> storage_service::snitch_reconfigured() {
|
||||
auto& snitch = _snitch.local();
|
||||
co_await mutate_token_metadata([&snitch] (mutable_token_metadata_ptr tmptr) -> future<> {
|
||||
// re-read local rack and DC info
|
||||
auto endpoint = utils::fb_utilities::get_broadcast_address();
|
||||
auto dr = locator::endpoint_dc_rack {
|
||||
.dc = snitch->get_datacenter(),
|
||||
.rack = snitch->get_rack(),
|
||||
};
|
||||
tmptr->update_topology(endpoint, std::move(dr));
|
||||
tmptr->update_topology(utils::fb_utilities::get_broadcast_address(), snitch->get_location());
|
||||
return make_ready_future<>();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user