From: Kefu Chai Date: Wed, 19 Apr 2017 06:55:34 +0000 (+0800) Subject: osd/OSDMonitor: trim last_osd_report if the osd is marked up/down X-Git-Tag: v12.0.3~307^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6b75ec3c92269d0e4a1eda54d04ce1bd02d4755a;p=ceph.git osd/OSDMonitor: trim last_osd_report if the osd is marked up/down and clear it at restart() Signed-off-by: Kefu Chai --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 0b059271fbb..baeeaa1c8a8 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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; diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 32d08f78d3e..4852571047a 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -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