From: xie xingguo Date: Fri, 4 Jan 2019 00:39:01 +0000 (+0800) Subject: mon/OSDMonitor: do not populate void pg_temp into nextmap X-Git-Tag: v14.1.0~480^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25780%2Fhead;p=ceph.git mon/OSDMonitor: do not populate void pg_temp into nextmap Due to commit ea723fb, pg_temp with clean acting set are added to inc map. The original intent was to clear out pg_temps during priming, but as written it would set a new_pg_temp item clearing the pg_temp even if one didn't already exist. Adding the up != acting condition in there makes us only take that path if there is an existing pg_temp entry to remove. Fixes: https://tracker.ceph.com/issues/37784 Signed-off-by: Aleksei Zakharov --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 9f7f176aabe2..ac943f1c9834 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -979,7 +979,8 @@ void OSDMonitor::prime_pg_temp( int next_up_primary, next_acting_primary; next.pg_to_up_acting_osds(pgid, &next_up, &next_up_primary, &next_acting, &next_acting_primary); - if (acting == next_acting && next_up != next_acting) + if (acting == next_acting && + !(up != acting && next_up == next_acting)) return; // no change since last epoch if (acting.empty())