]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
nvmeofgw : do not process starting beacons from GWs in DELETING state 69025/head
authorLeonid Chernin <leonidc@il.ibm.com>
Tue, 3 Feb 2026 13:45:36 +0000 (15:45 +0200)
committerLeonid Chernin <leonidc@il.ibm.com>
Wed, 20 May 2026 14:15:17 +0000 (17:15 +0300)
           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>
(cherry picked from commit 4bf6df1d82c84d7ed1040b7d0f4ed7d0a30c658c)

src/mon/NVMeofGwMap.cc
src/mon/NVMeofGwMon.cc

index b1eeada8fb01c19b2945641def1211402c94f7ea..0123a6b060e56330f073fad110246319e4b67cc2 100755 (executable)
@@ -41,10 +41,10 @@ void NVMeofGwMap::to_gmap(
       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(
index 80d5d852a5e8b1baeeeb0e0ea71dfeb43a1004d9..50bf8c58b22befbb3d18b02e3a3de341b1f42ec6 100644 (file)
@@ -1097,6 +1097,14 @@ bool NVMeofGwMon::prepare_beacon(MonOpRequestRef op)
               << 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, header_ver,
             group_key, sequence);