]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: invalidate max_failed_since on cancel_report 24281/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 6 Sep 2018 02:44:26 +0000 (10:44 +0800)
committerPrashant D <pdhange@redhat.com>
Tue, 25 Sep 2018 22:33:32 +0000 (18:33 -0400)
max_failed_since might reference the very failure-report which is to be
cancelled. We can simply invalidate it here to make **get_failed_since()**
recalculate if necessary.

Fixes: http://tracker.ceph.com/issues/35860
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit 91a2d408a9349db08e916e2145040df8b1f17e14)

src/mon/OSDMonitor.h

index f1864d5a3624d1b9c1a9c99c07164f2fe7a4c504..8c5cb8ba4b55101b4278276dd8923c8a0c37321b 100644 (file)
@@ -81,7 +81,7 @@ struct failure_info_t {
                             MonOpRequestRef op) {
     map<int, failure_reporter_t>::iterator p = reporters.find(who);
     if (p == reporters.end()) {
-      if (max_failed_since < failed_since)
+      if (max_failed_since != utime_t() && max_failed_since < failed_since)
        max_failed_since = failed_since;
       p = reporters.insert(map<int, failure_reporter_t>::value_type(who, failure_reporter_t(failed_since))).first;
     }
@@ -108,6 +108,7 @@ struct failure_info_t {
       return MonOpRequestRef();
     MonOpRequestRef ret = p->second.op;
     reporters.erase(p);
+    max_failed_since = utime_t();
     return ret;
   }
 };