]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: trigger resharding of versioned buckets sooner
authorMykola Golub <mykola.golub@clyso.com>
Sat, 19 Oct 2024 10:49:06 +0000 (11:49 +0100)
committerCasey Bodley <cbodley@redhat.com>
Wed, 28 May 2025 21:44:55 +0000 (17:44 -0400)
Versioned buckets require more keys per object.

Fixes: https://tracker.ceph.com/issues/68206
Signed-off-by: Mykola Golub <mykola.golub@clyso.com>
(cherry picked from commit b45f65615d3415b90b48efdb1c4d2c3995316582)

Conflicts:
src/rgw/driver/rados/rgw_rados.cc
src/rgw/driver/rados/rgw_rados.h
src/rgw/driver/rados/rgw_reshard.cc
  calculate_preferred_shards() changes from #57538 not on squid

src/rgw/driver/rados/rgw_rados.cc

index 68e91cdefe8a083abaadb6fba81e452969c5ae3d..a18b8e4640b68457571712f74eed50f0551b97d7 100644 (file)
@@ -10512,9 +10512,16 @@ int RGWRados::check_bucket_shards(const RGWBucketInfo& bucket_info,
   }
 
   uint32_t suggested_num_shards = 0;
-  const uint64_t max_objs_per_shard =
+  uint64_t max_objs_per_shard =
     cct->_conf.get_val<uint64_t>("rgw_max_objs_per_shard");
 
+  if (bucket_info.versioning_enabled()) {
+    // Since each versioned bucket requires 4 entries for the first object
+    // and 2 additional entries for each additional object, we want to
+    // trigger resharding sooner.
+    max_objs_per_shard /= 3;
+  }
+
   // TODO: consider per-bucket sync policy here?
   const bool is_multisite = svc.zone->need_to_log_data();