From: Casey Bodley Date: Wed, 31 Jul 2019 21:06:13 +0000 (-0400) Subject: radosgw-admin: 'mdlog trim' loops until done X-Git-Tag: v13.2.7~37^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a1cfdee9c7e3040ce3f2b5ad02dc84fed93eda8d;p=ceph.git radosgw-admin: 'mdlog trim' loops until done Signed-off-by: Casey Bodley (cherry picked from commit 91eef6712ad29d6c15907f1663e6143fc4144dec) Conflicts: store->time_log_trim() instead of svc.cls->timelog.trim() src/rgw/rgw_metadata.cc no null_yield --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index aceb4e3f0e2e..0405fcaf1cc5 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -6823,8 +6823,12 @@ next: } RGWMetadataLog *meta_log = store->meta_mgr->get_log(period_id); - ret = meta_log->trim(shard_id, start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker); - if (ret < 0) { + // trim until -ENODATA + do { + ret = meta_log->trim(shard_id, start_time.to_real_time(), + end_time.to_real_time(), start_marker, end_marker); + } while (ret == 0); + if (ret < 0 && ret != -ENODATA) { cerr << "ERROR: meta_log->trim(): " << cpp_strerror(-ret) << std::endl; return -ret; } diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index ef35edba14c1..ed237b9e45d1 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -222,14 +222,8 @@ int RGWMetadataLog::trim(int shard_id, const real_time& from_time, const real_ti string oid; get_shard_oid(shard_id, oid); - int ret; - - ret = store->time_log_trim(oid, from_time, end_time, start_marker, end_marker); - - if (ret == -ENOENT || ret == -ENODATA) - ret = 0; - - return ret; + return store->time_log_trim(oid, from_time, end_time, start_marker, + end_marker, nullptr); } int RGWMetadataLog::lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id) {