From d6b7e2ca58af9457d2cb0a3ce1c3ca683a9eecff Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Tue, 26 Mar 2019 15:02:02 +0800 Subject: [PATCH] osd/PG: move down peers out from peer_purged In purge_strays(), we'll aggressively clear stray_set and add all related peers into peer_purged. However, if the corrsponding peer is down and becomes up again, (unconditionally) adding it to peer_purged will prevent primary from re-purging it. (See Active::react(const MNotifyRec& notevt)) On consuming a new osdmap, let's move any down peers out from peer_purged simutaneously. This way we can lower the risk of leaving any leftover PGs behind. Related-to: http://tracker.ceph.com/issues/38931 Signed-off-by: xie xingguo --- src/osd/PG.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index bec5666ab9e4e..0a01bb88599db 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -980,6 +980,7 @@ void PG::remove_down_peer_info(const OSDMapRef osdmap) peer_missing.erase(p->first); peer_log_requested.erase(p->first); peer_missing_requested.erase(p->first); + peer_purged.erase(p->first); // so we can re-purge if necessary peer_info.erase(p++); removed = true; } else -- 2.39.5