diff --git a/locator/token_metadata.cc b/locator/token_metadata.cc index 887c42dc407f..60d5e73c48e4 100644 --- a/locator/token_metadata.cc +++ b/locator/token_metadata.cc @@ -562,7 +562,7 @@ const std::unordered_map& token_metadata_impl::get_endpoi } bool token_metadata_impl::is_member(inet_address endpoint) const { - return _topology.has_endpoint(endpoint); + return _topology.has_endpoint(endpoint, topology::pending::no); } void token_metadata_impl::add_bootstrap_token(token t, inet_address endpoint) { diff --git a/locator/token_metadata.hh b/locator/token_metadata.hh index a3cfc43064c0..68e8680b777f 100644 --- a/locator/token_metadata.hh +++ b/locator/token_metadata.hh @@ -67,9 +67,10 @@ public: void remove_endpoint(inet_address ep); /** - * Returns true iff contains given endpoint + * Returns true iff contains given endpoint. + * Excludes pending endpoints if `with_pending == pending::no`. */ - bool has_endpoint(inet_address, pending with_pending = pending::no) const; + bool has_endpoint(inet_address, pending with_pending) const; const std::unordered_map>& diff --git a/message/messaging_service.cc b/message/messaging_service.cc index 837d85cc3057..d04d7690bba0 100644 --- a/message/messaging_service.cc +++ b/message/messaging_service.cc @@ -731,7 +731,9 @@ shared_ptr messaging_service::ge std::optional topology_status; auto has_topology = [&] { if (!topology_status.has_value()) { - topology_status = _token_metadata ? _token_metadata->get()->get_topology().has_endpoint(id.addr) : false; + topology_status = _token_metadata + ? _token_metadata->get()->get_topology().has_endpoint(id.addr, locator::topology::pending::yes) + : false; } return *topology_status; };