]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/progress: Bug fix complete event when OSD marked in
authorKamoltat (Junior) Sirivadhna <ksirivad@redhat.com>
Fri, 21 Jun 2019 18:06:53 +0000 (14:06 -0400)
committerkamoltat <ksirivad@redhat.com>
Thu, 26 Nov 2020 05:55:47 +0000 (05:55 +0000)
Swap the order of checking for complete event
when OSD is marked in and creating a
PG Recovery event so that the event
doesn't cancel itself.

Signed-off-by: Kamoltat (Junior) Sirivadhna <ksirivad@redhat.com>
(cherry picked from commit 93d4d9d7044e991a7bbdb70b0aef02284e6eda22)

Conflicts:
src/pybind/mgr/progress/module.py - change self._events.item()
    to list(self._events)
  - add self.get("pg_ready")

src/pybind/mgr/progress/module.py

index 3ad514a65a691ab4629ab5ea1af8e81368eeda07..ca6581e5dd2edd49ed00b37b9d0395ef87c6e421 100644 (file)
@@ -419,26 +419,28 @@ class Module(MgrModule):
         self.log.warn("{0} PGs affected by osd.{1} being marked {2}".format(
             len(affected_pgs), osd_id, marked))
 
-        if len(affected_pgs) > 0:
-            ev = PgRecoveryEvent(
-               "Rebalancing after osd.{0} marked {1}".format(osd_id, marked),
-               refs=[("osd", osd_id)],
-               which_pgs=affected_pgs,
-               evacuate_osds=[osd_id]
-            )
-            ev.pg_update(self.get("pg_dump"), self.log)
-            self._events[ev.id] = ev
-            
+           
         # In the case of the osd coming back in, we might need to cancel 
         # previous recovery event for that osd
         if marked == "in":
-            for ev_id, ev in self._events.items():
+            for ev_id in list(self._events):
+                ev = self._events[ev_id]
                 if isinstance(ev, PgRecoveryEvent) and osd_id in ev.evacuating_osds:
                     self.log.info("osd.{0} came back in, cancelling event".format(
                         osd_id
                     ))
                     self._complete(ev)
 
+        if len(affected_pgs) > 0:
+            ev = PgRecoveryEvent(
+                    "Rebalancing after osd.{0} marked {1}".format(osd_id, marked),
+                    refs=[("osd", osd_id)],
+                    which_pgs=affected_pgs,
+                    evacuate_osds=[osd_id]
+                    )
+            ev.pg_update(self.get("pg_dump"), self.get("pg_ready"), self.log)
+            self._events[ev.id] = ev
+                 
     def _osdmap_changed(self, old_osdmap, new_osdmap):
         old_dump = old_osdmap.dump()
         new_dump = new_osdmap.dump()