From: xie xingguo Date: Tue, 26 Mar 2019 07:02:02 +0000 (+0800) Subject: osd/PG: move down peers out from peer_purged X-Git-Tag: v13.2.6~17^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F27940%2Fhead;p=ceph.git 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) --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 99b88706367a..41c585efd8f2 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