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:
Petr Gusev
2023-10-20 18:40:31 +04:00
parent 5227b71363
commit c9fbe3d377
5 changed files with 9 additions and 8 deletions

View File

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

View File

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

View File

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

View File

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

View File

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