]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: invalidate max_failed_since on cancel_report 23949/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 6 Sep 2018 02:44:26 +0000 (10:44 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Sat, 8 Sep 2018 01:45:16 +0000 (09:45 +0800)
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>
src/mon/OSDMonitor.h

index 4d560811a857bc5bd6b3b2ba346d43857d354e7c..c0bae30e8905a4ba5688b1bd5f4c871bcccb4156 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;
   }
 };