topology: unindex_node: erase dc from datacenters when empty
In branch 5.2 we erase `dc` from `_datacenters` if there are
no more endpoints listed in `_dc_endpoints[dc]`.
This was lost unintentionally in f3d5df5448
and this commit restores that behavior, and fixes test_remove_endpoint.
Fixes scylladb/scylladb#14896
Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
Closes #14897
This commit is contained in:
committed by
Botond Dénes
parent
0239ba4527
commit
949ea43034
@@ -360,6 +360,7 @@ void topology::unindex_node(const node* node) {
|
||||
_dc_rack_nodes.erase(dc);
|
||||
_dc_racks.erase(dc);
|
||||
_dc_endpoints.erase(dit);
|
||||
_datacenters.erase(dc);
|
||||
} else {
|
||||
_dc_rack_nodes[dc][rack].erase(node);
|
||||
auto& racks = _dc_racks[dc];
|
||||
|
||||
@@ -216,7 +216,7 @@ SEASTAR_THREAD_TEST_CASE(test_remove_endpoint) {
|
||||
topo.remove_endpoint(ep1);
|
||||
BOOST_REQUIRE_EQUAL(topo.get_datacenter_endpoints(), (dc_endpoints_t{}));
|
||||
BOOST_REQUIRE_EQUAL(topo.get_datacenter_racks(), (dc_racks_t{}));
|
||||
BOOST_REQUIRE_EQUAL(topo.get_datacenters(), (dcs_t{"dc1"}));
|
||||
BOOST_REQUIRE_EQUAL(topo.get_datacenters(), (dcs_t{}));
|
||||
}
|
||||
|
||||
SEASTAR_THREAD_TEST_CASE(test_load_sketch) {
|
||||
|
||||
Reference in New Issue
Block a user