locator: make dc_rack_fn a template
In the next commits token_metadata will be made a template with NodeId=inet_address|host_id parameter. This parameter will be passed to dc_rack_fn function, so it also should be made a template.
This commit is contained in:
@@ -236,7 +236,7 @@ public:
|
||||
static range<dht::token> interval_to_range(boost::icl::interval<token>::interval_type i);
|
||||
|
||||
public:
|
||||
future<> update_topology_change_info(dc_rack_fn& get_dc_rack);
|
||||
future<> update_topology_change_info(dc_rack_fn<gms::inet_address>& get_dc_rack);
|
||||
const std::optional<topology_change_info>& get_topology_change_info() const {
|
||||
return _topology_change_info;
|
||||
}
|
||||
@@ -723,7 +723,7 @@ token_metadata_impl::interval_to_range(boost::icl::interval<token>::interval_typ
|
||||
return range<dht::token>({{i.lower(), start_inclusive}}, {{i.upper(), end_inclusive}});
|
||||
}
|
||||
|
||||
future<> token_metadata_impl::update_topology_change_info(dc_rack_fn& get_dc_rack) {
|
||||
future<> token_metadata_impl::update_topology_change_info(dc_rack_fn<gms::inet_address>& get_dc_rack) {
|
||||
if (_bootstrap_tokens.empty() && _leaving_endpoints.empty() && _replacing_endpoints.empty()) {
|
||||
co_await utils::clear_gently(_topology_change_info);
|
||||
_topology_change_info.reset();
|
||||
@@ -1115,7 +1115,7 @@ token_metadata::interval_to_range(boost::icl::interval<token>::interval_type i)
|
||||
}
|
||||
|
||||
future<>
|
||||
token_metadata::update_topology_change_info(dc_rack_fn& get_dc_rack) {
|
||||
token_metadata::update_topology_change_info(dc_rack_fn<gms::inet_address>& get_dc_rack) {
|
||||
return _impl->update_topology_change_info(get_dc_rack);
|
||||
}
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ public:
|
||||
static boost::icl::interval<token>::interval_type range_to_interval(range<dht::token> r);
|
||||
static range<dht::token> interval_to_range(boost::icl::interval<token>::interval_type i);
|
||||
|
||||
future<> update_topology_change_info(dc_rack_fn& get_dc_rack);
|
||||
future<> update_topology_change_info(dc_rack_fn<gms::inet_address>& get_dc_rack);
|
||||
|
||||
const std::optional<topology_change_info>& get_topology_change_info() const;
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ struct endpoint_dc_rack {
|
||||
bool operator==(const endpoint_dc_rack&) const = default;
|
||||
};
|
||||
|
||||
using dc_rack_fn = seastar::noncopyable_function<std::optional<endpoint_dc_rack>(inet_address)>;
|
||||
template <typename NodeId>
|
||||
using dc_rack_fn = seastar::noncopyable_function<std::optional<endpoint_dc_rack>(NodeId)>;
|
||||
|
||||
} // namespace locator
|
||||
|
||||
@@ -6109,7 +6109,7 @@ future<> storage_service::update_topology_change_info(mutable_token_metadata_ptr
|
||||
assert(this_shard_id() == 0);
|
||||
|
||||
try {
|
||||
locator::dc_rack_fn get_dc_rack_from_gossiper([this] (inet_address ep) { return get_dc_rack_for(ep); });
|
||||
locator::dc_rack_fn<gms::inet_address> get_dc_rack_from_gossiper([this] (inet_address ep) { return get_dc_rack_for(ep); });
|
||||
co_await tmptr->update_topology_change_info(get_dc_rack_from_gossiper);
|
||||
} catch (...) {
|
||||
auto ep = std::current_exception();
|
||||
|
||||
@@ -17,7 +17,7 @@ using namespace locator;
|
||||
namespace {
|
||||
const auto ks_name = sstring("test-ks");
|
||||
|
||||
endpoint_dc_rack get_dc_rack(inet_address) {
|
||||
endpoint_dc_rack get_dc_rack(gms::inet_address) {
|
||||
return {
|
||||
.dc = "unk-dc",
|
||||
.rack = "unk-rack"
|
||||
@@ -36,7 +36,7 @@ namespace {
|
||||
|
||||
template <typename Strategy>
|
||||
mutable_vnode_erm_ptr create_erm(mutable_token_metadata_ptr tmptr, replication_strategy_config_options opts = {}) {
|
||||
dc_rack_fn get_dc_rack_fn = get_dc_rack;
|
||||
dc_rack_fn<gms::inet_address> get_dc_rack_fn = get_dc_rack;
|
||||
tmptr->update_topology_change_info(get_dc_rack_fn).get();
|
||||
auto strategy = seastar::make_shared<Strategy>(std::move(opts));
|
||||
return calculate_effective_replication_map(std::move(strategy), std::move(tmptr)).get0();
|
||||
|
||||
Reference in New Issue
Block a user