]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: RGWRemoteBucketManager constructor takes num_shards
authorAdam C. Emerson <aemerson@redhat.com>
Thu, 2 Sep 2021 21:58:58 +0000 (17:58 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Tue, 1 Feb 2022 22:14:42 +0000 (17:14 -0500)
The logic for getting it was moved to its caller.

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

index be4bb3d6324ade719800fa46f299098059e581a5..00730fd2393abf2a82b2cf6e16788385a1307c99 100644 (file)
@@ -2813,6 +2813,7 @@ RGWRemoteBucketManager::RGWRemoteBucketManager(const DoutPrefixProvider *_dpp,
                                                const rgw_zone_id& _source_zone,
                                                RGWRESTConn *_conn,
                                                const RGWBucketInfo& source_bucket_info,
+                                              const int num_shards,
                                                const rgw_bucket& dest_bucket)
   : dpp(_dpp), sync_env(_sync_env), conn(_conn), source_zone(_source_zone),
     full_status_obj(sync_env->svc->zone->get_zone_params().log_pool,
@@ -2821,23 +2822,15 @@ RGWRemoteBucketManager::RGWRemoteBucketManager(const DoutPrefixProvider *_dpp,
                                                                     dest_bucket)),
     source_bucket_info(source_bucket_info)
 {
-  rgw_bucket_index_marker_info remote_info;
-  BucketIndexShardsManager remote_markers;
-  rgw_read_remote_bilog_info(dpp, conn, source_bucket_info.bucket,
-                             remote_info, remote_markers, null_yield);
-  int num_shards = remote_markers.get().size();
-
   sync_pairs.resize(num_shards);
 
-  int cur_shard = std::min<int>(source_bucket_info.layout.current_index.layout.normal.num_shards, 0);
-
-  for (int i = 0; i < num_shards; ++i, ++cur_shard) {
-    auto& sync_pair = sync_pairs[i];
+  for (int cur_shard = 0; cur_shard < num_shards; ++cur_shard) {
+    auto& sync_pair = sync_pairs[cur_shard];
 
     sync_pair.source_bs.bucket = source_bucket_info.bucket;
     sync_pair.dest_bucket = dest_bucket;
 
-    sync_pair.source_bs.shard_id = (source_bucket_info.layout.current_index.layout.normal.num_shards > 0 ? cur_shard : -1);
+    sync_pair.source_bs.shard_id = cur_shard;
   }
 
   sc.init(sync_env, conn, source_zone);
@@ -5515,10 +5508,24 @@ int RGWBucketPipeSyncStatusManager::init(const DoutPrefixProvider *dpp)
       last_zone = szone;
     }
 
+    rgw_bucket_index_marker_info remote_info;
+    BucketIndexShardsManager remote_markers;
+    auto r = rgw_read_remote_bilog_info(dpp, conn, pipe.source.get_bucket_info().bucket,
+                                       remote_info, remote_markers,
+                                       null_yield);
+
+    if (r < 0) {
+      ldpp_dout(dpp, 0) << __PRETTY_FUNCTION__ << ":" << __LINE__
+                       << " rgw_read_remote_bilog_info: r="
+                       << r << dendl;
+      return r;
+    }
+    const int num_shards = remote_markers.get().size();
     source_mgrs.push_back(new RGWRemoteBucketManager(this, &sync_env,
-                                                     szone, conn,
-                                                     pipe.source.get_bucket_info(),
-                                                     pipe.target.get_bucket()));
+                                                    szone, conn,
+                                                    pipe.source.get_bucket_info(),
+                                                    num_shards,
+                                                    pipe.target.get_bucket()));
   }
 
   return 0;
index 7c2abed736acc6126201375a73e27b19b494c404..88c0db42f605df72805e618f800d562de48b20d4 100644 (file)
@@ -682,10 +682,11 @@ class RGWRemoteBucketManager {
 
 public:
   RGWRemoteBucketManager(const DoutPrefixProvider *_dpp,
-                     RGWDataSyncEnv *_sync_env,
-                     const rgw_zone_id& _source_zone, RGWRESTConn *_conn,
-                     const RGWBucketInfo& source_bucket_info,
-                     const rgw_bucket& dest_bucket);
+                        RGWDataSyncEnv *_sync_env,
+                        const rgw_zone_id& _source_zone, RGWRESTConn *_conn,
+                        const RGWBucketInfo& source_bucket_info,
+                        const int num_shards,
+                        const rgw_bucket& dest_bucket);
 
   RGWCoroutine *read_sync_status_cr(int num, rgw_bucket_shard_sync_info *sync_status);
   RGWCoroutine *init_sync_status_cr(RGWObjVersionTracker& objv_tracker, rgw_bucket_index_marker_info& info);