]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd/OSDMonitor: trim last_osd_report if the osd is marked up/down
authorKefu Chai <kchai@redhat.com>
Wed, 19 Apr 2017 06:55:34 +0000 (14:55 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 19 Apr 2017 07:05:03 +0000 (15:05 +0800)
and clear it at restart()

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h

index 0b059271fbb38ff1a2ba2c56e342e5c1b0b1a33c..baeeaa1c8a8f532f5bc8ae1078e2067d233b94db 100644 (file)
@@ -327,6 +327,12 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
     if (mon->monmap->get_required_features().contains_all(
           ceph::features::mon::FEATURE_LUMINOUS)) {
       creating_pgs = update_pending_creatings(inc);
+      for (const auto &osd_state : inc.new_state) {
+       if (osd_state.second & CEPH_OSD_UP) {
+         // could be marked up *or* down, but we're too lazy to check which
+         last_osd_report.erase(osd_state.first);
+       }
+      }
     }
   }
 
@@ -432,6 +438,11 @@ void OSDMonitor::on_active()
   start_mapping();
 }
 
+void OSDMonitor::on_restart()
+{
+  last_osd_report.clear();
+}
+
 void OSDMonitor::on_shutdown()
 {
   dout(10) << __func__ << dendl;
index 32d08f78d3e07fc6ea5c5bcf141215648938012e..4852571047af6035d775c24a4cf2fd9cc8fe01d1 100644 (file)
@@ -156,6 +156,7 @@ private:
   void create_pending() override;  // prepare a new pending
   void encode_pending(MonitorDBStore::TransactionRef t) override;
   void on_active() override;
+  void on_restart() override;
   void on_shutdown() override;
   /**
    * we haven't delegated full version stashing to paxosservice for some time