From: zhang Shaowen Date: Mon, 17 Jun 2019 08:51:20 +0000 (+0800) Subject: rgw: fix a bug thart lifecycle expiraton generates delete marker continuously. X-Git-Tag: v15.1.0~1985^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fea035e038436a3021f12660a12f789c561b3279;p=ceph.git rgw: fix a bug thart lifecycle expiraton generates delete marker continuously. Fixes: http://tracker.ceph.com/issues/40393 Signed-off-by: zhang Shaowen --- diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index d51556a54cdb..07452147fff3 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -726,6 +726,14 @@ public: ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": not current, skipping" << dendl; return false; } + if (o.is_delete_marker()) { + if (oc.ol.next_has_same_name()) { + return false; + } else { + *exp_time = real_clock::now(); + return true; + } + } auto& mtime = o.meta.mtime; bool is_expired; @@ -747,7 +755,12 @@ public: int process(lc_op_ctx& oc) { auto& o = oc.o; - int r = remove_expired_obj(oc, !oc.bucket_info.versioned()); + int r; + if (o.is_delete_marker()) { + r = remove_expired_obj(oc, true); + } else { + r = remove_expired_obj(oc, !oc.bucket_info.versioned()); + } if (r < 0) { ldout(oc.cct, 0) << "ERROR: remove_expired_obj " << dendl; return r;