]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add full_status_oid() for buckets
authorCasey Bodley <cbodley@redhat.com>
Tue, 6 Oct 2020 21:59:18 +0000 (17:59 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 27 May 2022 19:47:30 +0000 (15:47 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_data_sync.cc
src/rgw/rgw_data_sync.h

index cd5a7dd4e4807dc950dfdc60ca63139c001071cf..f58c92af31669cfa6deb8ba31db3bc0af701c2cb 100644 (file)
@@ -49,6 +49,7 @@ using namespace std;
 static const string datalog_sync_status_oid_prefix = "datalog.sync-status";
 static const string datalog_sync_status_shard_prefix = "datalog.sync-status.shard";
 static const string datalog_sync_full_sync_index_prefix = "data.full-sync.index";
+static const string bucket_full_status_oid_prefix = "bucket.full-sync-status";
 static const string bucket_status_oid_prefix = "bucket.sync-status";
 static const string object_status_oid_prefix = "bucket.sync-status";
 
@@ -4867,6 +4868,19 @@ std::ostream& RGWBucketPipeSyncStatusManager::gen_prefix(std::ostream& out) cons
     << " bucket:" << dest_bucket << ' ';
 }
 
+string RGWBucketPipeSyncStatusManager::full_status_oid(const rgw_zone_id& source_zone,
+                                                       const rgw_bucket& source_bucket,
+                                                       const rgw_bucket& dest_bucket)
+{
+  if (source_bucket == dest_bucket) {
+    return bucket_full_status_oid_prefix + "." + source_zone.id + ":"
+        + dest_bucket.get_key();
+  } else {
+    return bucket_full_status_oid_prefix + "." + source_zone.id + ":"
+        + dest_bucket.get_key() + ":" + source_bucket.get_key();
+  }
+}
+
 string RGWBucketPipeSyncStatusManager::inc_status_oid(const rgw_zone_id& source_zone,
                                                       const rgw_bucket_sync_pair_info& sync_pair)
 {
index b4e371fa835790bb6465452f285e9866ce328206..2f33a7eb0e5489b2062204b1d1311377c17341a7 100644 (file)
@@ -725,6 +725,9 @@ public:
   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);
   static std::string inc_status_oid(const rgw_zone_id& source_zone,
                                    const rgw_bucket_sync_pair_info& bs);
   // specific source obj sync status, can be used by sync modules