]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: ignore osd failures from before up_from 3631/head
authorSage Weil <sage@redhat.com>
Thu, 5 Feb 2015 11:07:50 +0000 (03:07 -0800)
committerSage Weil <sage@redhat.com>
Thu, 5 Feb 2015 11:07:50 +0000 (03:07 -0800)
If the failure was generated for an instance of the OSD prior to when
it came up, ignore it.

This probably causes a fair bit of unnecessary flapping in the wild...

Backport: giant, firefly
Fixes: #10762
Reported-by: Dan van der Ster <dan@vanderster.com>
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/OSDMonitor.cc

index 9b1f9801a16fa9985a33875af023f7e8caa2d4fb..0a5668154953abec0100f874236c96385d9385f3 100644 (file)
@@ -1228,8 +1228,9 @@ bool OSDMonitor::preprocess_failure(MOSDFailure *m)
   }
 
   // already reported?
-  if (osdmap.is_down(badboy)) {
-    dout(5) << "preprocess_failure dup: " << m->get_target() << ", from " << m->get_orig_source_inst() << dendl;
+  if (osdmap.is_down(badboy) ||
+      osdmap.get_up_from(badboy) > m->get_epoch()) {
+    dout(5) << "preprocess_failure dup/old: " << m->get_target() << ", from " << m->get_orig_source_inst() << dendl;
     if (m->get_epoch() < osdmap.get_epoch())
       send_incremental(m, m->get_epoch()+1);
     goto didit;