]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: Get rid of RGWBucketPipeSyncStatusManager::get_sync_status
authorAdam C. Emerson <aemerson@redhat.com>
Tue, 12 Apr 2022 20:46:46 +0000 (16:46 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 27 May 2022 19:47:34 +0000 (15:47 -0400)
Instead of one function that sets a variable and another function that
returns it and nobody else touches it, just return the sync status.

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

index f98a436c7d214f7c5c9358022df3bba0d7e461e6..5d23d5ce8bfafc61299620e1d2344ec73e431405 100644 (file)
@@ -8955,19 +8955,18 @@ next:
       return -ret;
     }
 
-    ret = sync.read_sync_status(dpp());
-    if (ret < 0) {
-      cerr << "ERROR: sync.read_sync_status() returned ret=" << ret << std::endl;
+    auto sync_status = sync.read_sync_status(dpp());
+    if (!sync_status) {
+      cerr << "ERROR: sync.read_sync_status() returned error="
+          << sync_status.error() << std::endl;
       return -ret;
     }
 
-    map<int, rgw_bucket_shard_sync_info>& sync_status = sync.get_sync_status();
-
-    encode_json("sync_status", sync_status, formatter.get());
+    encode_json("sync_status", *sync_status, formatter.get());
     formatter->flush(cout);
   }
 
- if (opt_cmd == OPT::BUCKET_SYNC_RUN) {
 if (opt_cmd == OPT::BUCKET_SYNC_RUN) {
     if (source_zone.empty()) {
       cerr << "ERROR: source zone not specified" << std::endl;
       return EINVAL;
index e45aab5b67b4170cbc50a24f42f67ec5ead632e1..c9701bf38249980cb5569afd4aeeb8e20e334817 100644 (file)
@@ -5469,8 +5469,11 @@ int RGWBucketPipeSyncStatusManager::init_sync_status(const DoutPrefixProvider *d
   return cr_mgr.run(dpp, stacks);
 }
 
-int RGWBucketPipeSyncStatusManager::read_sync_status(const DoutPrefixProvider *dpp)
+tl::expected<std::map<int, rgw_bucket_shard_sync_info>, int>
+RGWBucketPipeSyncStatusManager::read_sync_status(
+  const DoutPrefixProvider *dpp)
 {
+  std::map<int, rgw_bucket_shard_sync_info> sync_status;
   list<RGWCoroutinesStack *> stacks;
 
   for (auto& mgr : source_mgrs) {
@@ -5485,11 +5488,11 @@ int RGWBucketPipeSyncStatusManager::read_sync_status(const DoutPrefixProvider *d
   int ret = cr_mgr.run(dpp, stacks);
   if (ret < 0) {
     ldpp_dout(this, 0) << "ERROR: failed to read sync status for "
-        << bucket_str{dest_bucket} << dendl;
-    return ret;
+                      << bucket_str{dest_bucket} << dendl;
+    return tl::unexpected(ret);
   }
 
-  return 0;
+  return sync_status;
 }
 
 int RGWBucketPipeSyncStatusManager::run(const DoutPrefixProvider *dpp)
index 8beb3fba772bec9d799776581865477e5682ddb4..d54a20bc0793bd66fdad5cf7a60793355aca465c 100644 (file)
@@ -730,8 +730,6 @@ class RGWBucketPipeSyncStatusManager : public DoutPrefixProvider {
 
   std::vector<RGWRemoteBucketManager> source_mgrs;
 
-  std::map<int, rgw_bucket_shard_sync_info> sync_status;
-
 public:
   RGWBucketPipeSyncStatusManager(rgw::sal::RadosStore* store,
                                 std::optional<rgw_zone_id> source_zone,
@@ -743,9 +741,6 @@ public:
 
   int init(const DoutPrefixProvider *dpp);
 
-  std::map<int, rgw_bucket_shard_sync_info>& get_sync_status() { return sync_status; }
-  int init_sync_status(const DoutPrefixProvider *dpp);
-
   static std::string full_status_oid(const rgw_zone_id& source_zone,
                                     const rgw_bucket& source_bucket,
                                     const rgw_bucket& dest_bucket);
@@ -762,7 +757,9 @@ public:
   unsigned get_subsys() const override;
   std::ostream& gen_prefix(std::ostream& out) const override;
 
-  int read_sync_status(const DoutPrefixProvider *dpp);
+  int init_sync_status(const DoutPrefixProvider *dpp);
+  tl::expected<std::map<int, rgw_bucket_shard_sync_info>, int> read_sync_status(
+    const DoutPrefixProvider *dpp);
   int run(const DoutPrefixProvider *dpp);
 };