From 6b75ec3c92269d0e4a1eda54d04ce1bd02d4755a Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 19 Apr 2017 14:55:34 +0800 Subject: [PATCH] osd/OSDMonitor: trim last_osd_report if the osd is marked up/down and clear it at restart() Signed-off-by: Kefu Chai --- src/mon/OSDMonitor.cc | 11 +++++++++++ src/mon/OSDMonitor.h | 1 + 2 files changed, 12 insertions(+) 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 -- 2.39.5