]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: ignore osd failures from before up_from 4047/head
authorSage Weil <sage@redhat.com>
Thu, 5 Feb 2015 11:07:50 +0000 (03:07 -0800)
committerLoic Dachary <ldachary@redhat.com>
Tue, 17 Mar 2015 16:50:59 +0000 (17:50 +0100)
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>
(cherry picked from commit 400ac237d35d0d1d53f240fea87e8483c0e2a7f5)

src/mon/OSDMonitor.cc

index 9e341d396346d2caaf4a2a9e652c9ac72520762c..5426f6318991734ad8888d232d89241f62d7a5e4 100644 (file)
@@ -895,8 +895,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;