From ed36280efe8bbd37492698468dff4c920f08be4e 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 (cherry picked from commit f7c5b01e181630bb15e8b923b0334eb6adfdf50a) --- src/osd/PG.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 99b88706367af..41c585efd8f20 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -964,6 +964,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