From: Samuel Just Date: Fri, 14 Nov 2014 23:44:20 +0000 (-0800) Subject: PG: always clear_primary_state when leaving Primary X-Git-Tag: v0.80.10~62^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8b07236cd799b4752cbe620b737343a02a703a17;p=ceph.git PG: always clear_primary_state when leaving Primary Otherwise, entries from the log collection process might leak into the next epoch, where we might end up choosing a different authoritative log. In this case, it resulted in us not rolling back to log entries on one of the replicas prior to trying to recover from an affected object due to the peer_missing not being cleared. Fixes: #10059 Backport: giant, firefly, dumpling Signed-off-by: Samuel Just (cherry picked from commit c87bde64dfccb5d6ee2877cc74c66fc064b1bcd7) --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index ebc2020cfff..31c108a4c3c 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5669,6 +5669,7 @@ void PG::RecoveryState::Primary::exit() pg->want_acting.clear(); utime_t dur = ceph_clock_now(pg->cct) - enter_time; pg->osd->recoverystate_perf->tinc(rs_primary_latency, dur); + pg->clear_primary_state(); } /*---------Peering--------*/