From: Mykola Golub Date: Tue, 27 Mar 2018 07:39:47 +0000 (+0300) Subject: osd: don't crash on empty snapset X-Git-Tag: v13.1.0~147^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3996c0ae9c344de12eac2226e260c586ef48b09f;p=ceph-ci.git osd: don't crash on empty snapset Signed-off-by: Igor Fedotov Signed-off-by: Mykola Golub --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 7c240df2670..555a4ae3565 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -11035,6 +11035,11 @@ int PrimaryLogPG::find_object_context(const hobject_t& oid, snapid_t first, last; auto p = obc->ssc->snapset.clone_snaps.find(soid.snap); assert(p != obc->ssc->snapset.clone_snaps.end()); + if (p->second.empty()) { + dout(1) << __func__ << " " << soid << " empty snapset -- DNE" << dendl; + assert(!cct->_conf->osd_debug_verify_snaps); + return -ENOENT; + } first = p->second.back(); last = p->second.front(); if (first <= oid.snap) { diff --git a/src/osd/SnapMapper.cc b/src/osd/SnapMapper.cc index 64e4568445a..6998ede3e24 100644 --- a/src/osd/SnapMapper.cc +++ b/src/osd/SnapMapper.cc @@ -155,7 +155,10 @@ int SnapMapper::get_snaps( bufferlist::iterator bp = got.begin()->second.begin(); decode(*out, bp); dout(20) << __func__ << " " << oid << " " << out->snaps << dendl; - assert(!out->snaps.empty()); + if (out->snaps.empty()) { + dout(1) << __func__ << " " << oid << " empty snapset" << dendl; + assert(!cct->_conf->osd_debug_verify_snaps); + } } else { dout(20) << __func__ << " " << oid << " (out == NULL)" << dendl; }