From c9fbe3d3777bd89ee54b334fcbc7b4df993a0cfc Mon Sep 17 00:00:00 2001 From: Petr Gusev Date: Fri, 20 Oct 2023 18:40:31 +0400 Subject: [PATCH] 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. --- locator/token_metadata.cc | 6 +++--- locator/token_metadata.hh | 2 +- locator/types.hh | 3 ++- service/storage_service.cc | 2 +- test/boost/token_metadata_test.cc | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/locator/token_metadata.cc b/locator/token_metadata.cc index 9889f90cc3..d0996a1f6f 100644 --- a/locator/token_metadata.cc +++ b/locator/token_metadata.cc @@ -236,7 +236,7 @@ public: static range interval_to_range(boost::icl::interval::interval_type i); public: - future<> update_topology_change_info(dc_rack_fn& get_dc_rack); + future<> update_topology_change_info(dc_rack_fn& get_dc_rack); const std::optional& get_topology_change_info() const { return _topology_change_info; } @@ -723,7 +723,7 @@ token_metadata_impl::interval_to_range(boost::icl::interval::interval_typ return range({{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& 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::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& get_dc_rack) { return _impl->update_topology_change_info(get_dc_rack); } diff --git a/locator/token_metadata.hh b/locator/token_metadata.hh index aee774cf70..841b68fd37 100644 --- a/locator/token_metadata.hh +++ b/locator/token_metadata.hh @@ -251,7 +251,7 @@ public: static boost::icl::interval::interval_type range_to_interval(range r); static range interval_to_range(boost::icl::interval::interval_type i); - future<> update_topology_change_info(dc_rack_fn& get_dc_rack); + future<> update_topology_change_info(dc_rack_fn& get_dc_rack); const std::optional& get_topology_change_info() const; diff --git a/locator/types.hh b/locator/types.hh index 4625062ead..96b491dafc 100644 --- a/locator/types.hh +++ b/locator/types.hh @@ -31,6 +31,7 @@ struct endpoint_dc_rack { bool operator==(const endpoint_dc_rack&) const = default; }; -using dc_rack_fn = seastar::noncopyable_function(inet_address)>; +template +using dc_rack_fn = seastar::noncopyable_function(NodeId)>; } // namespace locator diff --git a/service/storage_service.cc b/service/storage_service.cc index 302270a0bb..0147d37d15 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -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 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(); diff --git a/test/boost/token_metadata_test.cc b/test/boost/token_metadata_test.cc index 3dfe63155d..e4251bf248 100644 --- a/test/boost/token_metadata_test.cc +++ b/test/boost/token_metadata_test.cc @@ -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 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 get_dc_rack_fn = get_dc_rack; tmptr->update_topology_change_info(get_dc_rack_fn).get(); auto strategy = seastar::make_shared(std::move(opts)); return calculate_effective_replication_map(std::move(strategy), std::move(tmptr)).get0();