do not send unicast maps to GWs in DELETING state
fixes https://tracker.ceph.com/issues/74661
Signed-off-by: Leonid Chernin <leonidc@il.ibm.com>
const auto& gw_id = gw_created_pair.first;
const auto& gw_created = gw_created_pair.second;
gw_availability_t availability = gw_created.availability;
- // Gateways expect to see UNAVAILABLE, not DELETING
- // for entries in DELETING state
if (gw_created.availability == gw_availability_t::GW_DELETING) {
- availability = gw_availability_t::GW_UNAVAILABLE;
+ dout (4) << gw_id << "Send empty unicast map in Deleting state"
+ << dendl;
+ continue;
}
auto gw_state = NvmeGwClientState(
<< map.created_gws << dendl;
goto set_propose;
} else {
+ if (pending_map.created_gws[group_key][gw_id].availability ==
+ gw_availability_t::GW_DELETING) {
+ dout(4) << "Beacon from GW in Created while in monitor's"
+ " map it in DELETING state, ignore it"
+ << gw_id << dendl;
+ mon.no_reply(op);
+ goto false_return; // not sending ack to this beacon
+ }
pending_map.created_gws[group_key][gw_id].subsystems.clear();
pending_map.set_gw_beacon_sequence_number(gw_id, version,
group_key, sequence);