]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
radosgw-admin: 'datalog trim' takes shard-id and loops until done
authorCasey Bodley <cbodley@redhat.com>
Wed, 31 Jul 2019 21:05:40 +0000 (17:05 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 16 Aug 2019 15:28:22 +0000 (11:28 -0400)
Fixes: https://tracker.ceph.com/issues/41045
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_bucket.cc
src/rgw/rgw_bucket.h
src/rgw/services/svc_datalog_rados.cc
src/rgw/services/svc_datalog_rados.h

index c983e5e59d97e591ae04de31863829e0b8398740..9cd90916cac315b328c1abe075a14335fe245f2e 100644 (file)
@@ -7718,8 +7718,20 @@ next:
     if (ret < 0)
       return -ret;
 
-    ret = store->svc()->datalog_rados->trim_entries(start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
-    if (ret < 0) {
+    if (!specified_shard_id) {
+      cerr << "ERROR: requires a --shard-id" << std::endl;
+      return EINVAL;
+    }
+
+    // loop until -ENODATA
+    do {
+      auto datalog = store->svc()->datalog_rados;
+      ret = datalog->trim_entries(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: trim_entries(): " << cpp_strerror(-ret) << std::endl;
       return -ret;
     }
index ece514095b4bd85d896d4088dacf261408d91f52..549b75b1a3a352877f903b276ed0b49fca4dcd5e 100644 (file)
@@ -2310,32 +2310,11 @@ int RGWDataChangesLog::get_info(int shard_id, RGWDataChangesLogInfo *info)
 int RGWDataChangesLog::trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
                                     const string& start_marker, const string& end_marker)
 {
-  int ret;
-
   if (shard_id > num_shards)
     return -EINVAL;
 
-  ret = svc.cls->timelog.trim(oids[shard_id], start_time, end_time, start_marker, end_marker, nullptr, null_yield);
-
-  if (ret == -ENOENT || ret == -ENODATA)
-    ret = 0;
-
-  return ret;
-}
-
-int RGWDataChangesLog::trim_entries(const real_time& start_time, const real_time& end_time,
-                                    const string& start_marker, const string& end_marker)
-{
-  for (int shard = 0; shard < num_shards; shard++) {
-    int ret = svc.cls->timelog.trim(oids[shard], start_time, end_time, start_marker, end_marker, nullptr, null_yield);
-    if (ret == -ENOENT || ret == -ENODATA) {
-      continue;
-    }
-    if (ret < 0)
-      return ret;
-  }
-
-  return 0;
+  return svc.cls->timelog.trim(oids[shard_id], start_time, end_time,
+                               start_marker, end_marker, nullptr, null_yield);
 }
 
 bool RGWDataChangesLog::going_down()
index aabccafa544d70ebdc8c03878e7122065d77abf8..7b675386a47e956f7b0958dbe5ad8fb7cee770b4 100644 (file)
@@ -543,8 +543,6 @@ public:
                   bool *truncated);
   int trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
                    const string& start_marker, const string& end_marker);
-  int trim_entries(const real_time& start_time, const real_time& end_time,
-                   const string& start_marker, const string& end_marker);
   int get_info(int shard_id, RGWDataChangesLogInfo *info);
 
   using LogMarker = RGWDataChangesLogMarker;
index a87a1cfcb58d511bde0aa2df739bdccc56614e9b..0be8bb6ac2cf3cf4c1938922d8429995b2974d45 100644 (file)
@@ -80,10 +80,3 @@ int RGWSI_DataLog_RADOS::trim_entries(int shard_id, const real_time& start_time,
 {
   return log->trim_entries(shard_id, start_time, end_time, start_marker, end_marker);
 }
-
-int RGWSI_DataLog_RADOS::trim_entries(const real_time& start_time, const real_time& end_time,
-                                      const string& start_marker, const string& end_marker)
-{
-  return log->trim_entries(start_time, end_time, start_marker, end_marker);
-}
-
index b3d14adfd266c05203f9b5e1649610da0760dbef..37d4acc8c2e88368111d352d95c0aff4697605a7 100644 (file)
@@ -68,7 +68,5 @@ public:
                   list<rgw_data_change_log_entry>& entries, RGWDataChangesLogMarker& marker, bool *ptruncated);
   int trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
                    const string& start_marker, const string& end_marker);
-  int trim_entries(const real_time& start_time, const real_time& end_time,
-                   const string& start_marker, const string& end_marker);
 };