]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Print user friendly progress on `bucket sync init`
authorAdam C. Emerson <aemerson@redhat.com>
Thu, 30 Jun 2022 18:29:30 +0000 (14:29 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Sun, 17 Jul 2022 04:42:55 +0000 (00:42 -0400)
When `--extra-info` is provided

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/rgw/rgw_data_sync.cc
src/rgw/rgw_data_sync.h

index 3c110ebd50c394cd42a6066973fe922293a0b487..ff3fa92ccb8b6c27608fee23c09eb1ef70df7334 100644 (file)
@@ -5437,28 +5437,33 @@ RGWBucketPipeSyncStatusManager::construct(
   return self;
 }
 
-int RGWBucketPipeSyncStatusManager::init_sync_status(const DoutPrefixProvider *dpp)
+int RGWBucketPipeSyncStatusManager::init_sync_status(
+  const DoutPrefixProvider *dpp)
 {
-  list<RGWCoroutinesStack *> stacks;
-  std::vector<rgw_raw_obj> full_status_objs;
-  std::vector<rgw_bucket_sync_status> full_status;
-
+  // Just running one at a time saves us from buildup/teardown and in
+  // practice we only do one zone at a time.
   for (auto& source : sources) {
+    list<RGWCoroutinesStack*> stacks;
     RGWCoroutinesStack *stack = new RGWCoroutinesStack(store->ctx(), &cr_mgr);
-    full_status_objs.emplace_back(
-      sync_env.svc->zone->get_zone_params().log_pool,
-      full_status_oid(source.sc.source_zone, source.info.bucket, source.dest));
-
-    full_status.emplace_back();
-
+    pretty_print(source.sc.env, "Initializing sync state of bucket {} with zone {}.\n",
+                source.info.bucket.name, source.zone_name);
     stack->call(new RGWSimpleRadosWriteCR<rgw_bucket_sync_status>(
                  dpp, source.sc.env->async_rados, source.sc.env->svc->sysobj,
-                 full_status_objs.back(), full_status.back()));
-
+                 {sync_env.svc->zone->get_zone_params().log_pool,
+                   full_status_oid(source.sc.source_zone,
+                                  source.info.bucket,
+                                  source.dest)},
+                 rgw_bucket_sync_status{}));
     stacks.push_back(stack);
+    auto r = cr_mgr.run(dpp, stacks);
+    if (r < 0) {
+      pretty_print(source.sc.env,
+                  "Initialization of sync state for bucket {} with zone {} "
+                  "failed with error {}\n",
+                  source.info.bucket.name, source.zone_name, cpp_strerror(r));
+    }
   }
-
-  return cr_mgr.run(dpp, stacks);
+  return 0;
 }
 
 tl::expected<std::map<int, rgw_bucket_shard_sync_info>, int>
index 35db02f1d729c9c52cda09c79f832c3739af74a2..3eb809f08f69076b5473caff891c7553edd079f2 100644 (file)
@@ -4,6 +4,11 @@
 #ifndef CEPH_RGW_DATA_SYNC_H
 #define CEPH_RGW_DATA_SYNC_H
 
+#undef FMT_HEADER_ONLY
+#define FMT_HEADER_ONLY 1
+#include <fmt/format.h>
+#include <fmt/ostream.h>
+
 #include "include/encoding.h"
 
 #include "common/ceph_json.h"