]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/progress: behave if pgs disappear (due to a racing pg merge)
authorSage Weil <sage@redhat.com>
Fri, 12 Apr 2019 12:07:03 +0000 (07:07 -0500)
committerSage Weil <sage@redhat.com>
Fri, 12 Apr 2019 12:07:03 +0000 (07:07 -0500)
If one of the PGs we care about disappears, consider it complete.

Fixes: http://tracker.ceph.com/issues/38157
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/progress/module.py

index 805aa6d6a2bf13138e3787214eada384a35645bc..43da79b1121b8b88304f1caaab207b8b19abe211 100644 (file)
@@ -149,10 +149,17 @@ class PgRecoveryEvent(Event):
 
         if self._original_bytes_recovered is None:
             self._original_bytes_recovered = {}
+            missing_pgs = []
             for pg in self._pgs:
                 pg_str = str(pg)
-                self._original_bytes_recovered[pg] = \
-                    pg_to_state[pg_str]['stat_sum']['num_bytes_recovered']
+                if pg_str in pg_to_state:
+                    self._original_bytes_recovered[pg] = \
+                        pg_to_state[pg_str]['stat_sum']['num_bytes_recovered']
+                else:
+                    missing_pgs.append(pg)
+            if pg_dump.get('pg_ready', False):
+                for pg in missing_pgs:
+                    self._pgs.remove(pg)
 
         complete_accumulate = 0.0