]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: ignore osd failures from before up_from 3937/head
authorSage Weil <sage@redhat.com>
Thu, 5 Feb 2015 11:07:50 +0000 (03:07 -0800)
committerLoic Dachary <ldachary@redhat.com>
Tue, 10 Mar 2015 23:59:36 +0000 (00:59 +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 da06b86beb1d49193111ca8ae193d3b33b7c7df3..8ad26dee5afdaae2f3a865ab55d6965d47f3b068 100644 (file)
@@ -829,8 +829,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;