From: Matt Benjamin Date: Sun, 3 Apr 2022 20:36:22 +0000 (-0400) Subject: rgwlc: don't incorrectly expire delete markers when !next_key_name X-Git-Tag: v18.0.0~1108^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9cfc37807971b491176c1e8060e04d253071341e;p=ceph.git rgwlc: don't incorrectly expire delete markers when !next_key_name This is a fencepost case when operating on the last element of a listing, apparently masked before Mark Kogan's segfault fix). Fixes: https://tracker.ceph.com/issues/55168 Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index 7b76f4e0b02..669a65d20a6 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -1025,20 +1025,22 @@ public: return false; } if (o.is_delete_marker()) { - std::string nkn; - if (oc.next_key_name) nkn = *oc.next_key_name; - if (oc.next_has_same_name(o.key.name)) { - ldpp_dout(dpp, 7) << __func__ << "(): dm-check SAME: key=" << o.key - << " next_key_name: %%" << nkn << "%% " - << oc.wq->thr_name() << dendl; - return false; - } else { - ldpp_dout(dpp, 7) << __func__ << "(): dm-check DELE: key=" << o.key - << " next_key_name: %%" << nkn << "%% " - << oc.wq->thr_name() << dendl; + if (oc.next_key_name) { + std::string nkn = *oc.next_key_name; + if (oc.next_has_same_name(o.key.name)) { + ldpp_dout(dpp, 7) << __func__ << "(): dm-check SAME: key=" << o.key + << " next_key_name: %%" << nkn << "%% " + << oc.wq->thr_name() << dendl; + return false; + } else { + ldpp_dout(dpp, 7) << __func__ << "(): dm-check DELE: key=" << o.key + << " next_key_name: %%" << nkn << "%% " + << oc.wq->thr_name() << dendl; *exp_time = real_clock::now(); return true; + } } + return false; } auto& mtime = o.meta.mtime;