]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
blocklist issue fix
authorLeonid Chernin <leonidc@il.ibm.com>
Sun, 10 Aug 2025 15:53:32 +0000 (18:53 +0300)
committerLeonid Chernin <leonidc@il.ibm.com>
Sun, 14 Sep 2025 06:37:52 +0000 (09:37 +0300)
src/mon/NVMeofGwMap.cc
src/mon/NVMeofGwMon.cc

index 15f1fa284f5cd69018dd9552761281a825033b6e..84e00d5840f4414a96710ba013024281efe8cfd6 100755 (executable)
@@ -390,7 +390,7 @@ int NVMeofGwMap::process_gw_map_gw_down(
     auto& st = gw_state->second;
     st.set_unavailable_state();
     st.set_last_gw_down_ts();
-    st.subsystems.clear();
+    //st.subsystems.clear();// we need them for recreate nonce vector for blocklist
     st.reset_beacon_sequence();
     for (auto& state_itr: created_gws[group_key][gw_id].sm_state) {
       fsm_handle_gw_down(
@@ -1047,14 +1047,23 @@ int NVMeofGwMap::blocklist_gw(
   // find_already_created_gw(gw_id, group_key);
   NvmeGwMonState& gw_map = created_gws[group_key][gw_id];
   NvmeNonceVector nonces;
+
+  NvmeAnaNonceMap nonce_map;
+  for (const auto& sub: gw_map.subsystems) { // recreate nonce map from subsystems
+    for (const auto& ns: sub.namespaces) {
+         auto& nonce_vec = nonce_map[ns.anagrpid-1];//Converting   ana groups to offsets
+         if (std::find(nonce_vec.begin(), nonce_vec.end(), ns.nonce) == nonce_vec.end())
+           nonce_vec.push_back(ns.nonce);
+    }
+  }
   for (auto& state_itr: gw_map.sm_state) {
     // to make blocklist on all clusters of the failing GW
-    nonces.insert(nonces.end(), gw_map.nonce_map[state_itr.first].begin(),
-        gw_map.nonce_map[state_itr.first].end());
+    nonces.insert(nonces.end(), nonce_map[state_itr.first].begin(),
+        nonce_map[state_itr.first].end());
   }
-
+  gw_map.subsystems.clear();
   if (nonces.size() > 0) {
-    NvmeNonceVector &nonce_vector = gw_map.nonce_map[grpid];;
+    NvmeNonceVector &nonce_vector = nonces;//nonce_map[grpid];;
     std::string str = "[";
     entity_addrvec_t addr_vect;
 
index be5191825cc5c52477ea17c452cc4c59f544e989..c4751445160896c07fe305f283bcebc23f55ace7 100644 (file)
@@ -876,9 +876,6 @@ bool NVMeofGwMon::prepare_beacon(MonOpRequestRef op)
   }
   if (apply_beacon(gw_id, group_key, sub, avail, propose) !=0) { // Changed subsystems
     nonce_propose = true;
-    if (m->get_nonce_map().size()) {
-      pending_map.created_gws[group_key][gw_id].nonce_map = m->get_nonce_map();
-    }
     dout(10) << "subsystem(subs/listener/nonce/NM) of GW changed, propose pending "
              << gw_id << " available " << avail <<  dendl;
     dout(20) << "subsystems of GW " << gw_id << " "