From 6fbb42c44e4b6eb26a2990c8129f22678d47d5f6 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 20 Sep 2013 11:26:49 -0700 Subject: ReplicatedPG: add debugging in recover_replicas for objects added for backfill Signed-off-by: Samuel Just --- src/osd/ReplicatedPG.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 68f7d5e59a4..c89d2314e4d 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -7872,6 +7872,8 @@ int ReplicatedPG::recover_replicas(int max, ThreadPool::TPHandle &handle) int peer = acting[i]; map::const_iterator pm = peer_missing.find(peer); assert(pm != peer_missing.end()); + map::const_iterator pi = peer_info.find(peer); + assert(pi != peer_info.end()); size_t m_sz = pm->second.num_missing(); dout(10) << " peer osd." << peer << " missing " << m_sz << " objects." << dendl; @@ -7885,6 +7887,15 @@ int ReplicatedPG::recover_replicas(int max, ThreadPool::TPHandle &handle) handle.reset_tp_timeout(); const hobject_t soid(p->second); + if (soid > pi->second.last_backfill) { + if (!recovering.count(soid)) { + derr << __func__ << ": object added to missing set for backfill, but " + << "is not in recovering, error!" << dendl; + assert(0); + } + continue; + } + if (recovering.count(soid)) { dout(10) << __func__ << ": already recovering" << soid << dendl; continue; -- cgit v1.2.1