]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: Disable logging for datalog and bilog if zone doesn't export data
authorSoumya Koduri <skoduri@redhat.com>
Sat, 8 Apr 2023 12:23:24 +0000 (17:53 +0530)
committerSoumya Koduri <skoduri@redhat.com>
Tue, 23 May 2023 17:03:23 +0000 (22:33 +0530)
Zones (such as archive zone) which do not export data should have
sync logging disabled.

Fixes# https://tracker.ceph.com/issues/59106

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit 85f0cb592aa0d755c101d2e2845ad736a7697e3e)

src/rgw/driver/rados/rgw_bucket_sync.cc
src/rgw/driver/rados/rgw_rados.cc
src/rgw/services/svc_zone.cc

index 5fd81c53b1e7658e6260d40b2a7be54326f763d1..48cdebfcada044c250db1a61a756fb7fcfb8c7e8 100644 (file)
@@ -926,6 +926,10 @@ bool RGWBucketSyncPolicyHandler::bucket_exports_data() const
     return false;
   }
 
+  if (!zone_svc->sync_module_exports_data()) {
+    return false;
+  }
+
   if (bucket_is_sync_source()) {
     return true;
   }
index ec8e56377b8386b7d7b8caa19b8dbced88a1ce19..e7744a43ebe1c9bbc4dc3c3896cc977289615436 100644 (file)
@@ -7076,7 +7076,7 @@ int RGWRados::bucket_index_link_olh(const DoutPrefixProvider *dpp, RGWBucketInfo
                      cls_rgw_bucket_link_olh(op, key, olh_state.olh_tag,
                                               delete_marker, op_tag, meta, olh_epoch,
                                              unmod_since, high_precision_time,
-                                             svc.zone->get_zone().log_data, zones_trace);
+                                             svc.zone->need_to_log_data(), zones_trace);
                       return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, null_yield);
                     });
   if (r < 0) {
@@ -7123,7 +7123,7 @@ int RGWRados::bucket_index_unlink_instance(const DoutPrefixProvider *dpp,
                      op.assert_exists(); // bucket index shard must exist
                      cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING);
                      cls_rgw_bucket_unlink_instance(op, key, op_tag,
-                                                    olh_tag, olh_epoch, svc.zone->get_zone().log_data, zones_trace);
+                                                    olh_tag, olh_epoch, svc.zone->need_to_log_data(), zones_trace);
                       return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, null_yield);
                     });
   if (r < 0) {
@@ -8488,7 +8488,7 @@ int RGWRados::cls_obj_prepare_op(const DoutPrefixProvider *dpp, BucketShard& bs,
 
   cls_rgw_obj_key key(obj.key.get_index_key_name(), obj.key.instance);
   cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING);
-  cls_rgw_bucket_prepare_op(o, op, tag, key, obj.key.get_loc(), svc.zone->get_zone().log_data, bilog_flags, zones_trace);
+  cls_rgw_bucket_prepare_op(o, op, tag, key, obj.key.get_loc(), svc.zone->need_to_log_data(), bilog_flags, zones_trace);
   int ret = bs.bucket_obj.operate(dpp, &o, y);
   ldout_bitx(bitx, dpp, 10) << "EXITING " << __func__ << ": ret=" << ret << dendl_bitx;
   return ret;
@@ -8524,10 +8524,10 @@ int RGWRados::cls_obj_complete_op(BucketShard& bs, const rgw_obj& obj, RGWModify
   cls_rgw_obj_key key(ent.key.name, ent.key.instance);
   cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING);
   cls_rgw_bucket_complete_op(o, op, tag, ver, key, dir_meta, remove_objs,
-                             svc.zone->get_zone().log_data, bilog_flags, &zones_trace);
+                             svc.zone->need_to_log_data(), bilog_flags, &zones_trace);
   complete_op_data *arg;
   index_completion_manager->create_completion(obj, op, tag, ver, key, dir_meta, remove_objs,
-                                              svc.zone->get_zone().log_data, bilog_flags, &zones_trace, &arg);
+                                              svc.zone->need_to_log_data(), bilog_flags, &zones_trace, &arg);
   librados::AioCompletion *completion = arg->rados_completion;
   int ret = bs.bucket_obj.aio_operate(arg->rados_completion, &o);
   completion->release(); /* can't reference arg here, as it might have already been released */
@@ -9336,7 +9336,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
 
   std::unique_ptr<rgw::sal::Bucket> bucket;
   driver->get_bucket(nullptr, bucket_info, &bucket);
-  uint8_t suggest_flag = (svc.zone->get_zone().log_data ? CEPH_RGW_DIR_SUGGEST_LOG_OP : 0);
+  uint8_t suggest_flag = (svc.zone->need_to_log_data() ? CEPH_RGW_DIR_SUGGEST_LOG_OP : 0);
 
   std::string loc;
 
@@ -9551,7 +9551,7 @@ int RGWRados::check_bucket_shards(const RGWBucketInfo& bucket_info,
     cct->_conf.get_val<uint64_t>("rgw_max_objs_per_shard");
 
   // TODO: consider per-bucket sync policy here?
-  const bool is_multisite = svc.zone->get_zone().log_data;
+  const bool is_multisite = svc.zone->need_to_log_data();
 
   quota_handler->check_bucket_shards(dpp, max_objs_per_shard, num_source_shards,
                                     num_objs, is_multisite, need_resharding,
index 0476bc8f7081cd882d8fd9019d086eff2191d45a..3f810d7acd24510ddf008d2e4dbe919115522eeb 100644 (file)
@@ -720,7 +720,7 @@ bool RGWSI_Zone::need_to_sync() const
 
 bool RGWSI_Zone::need_to_log_data() const
 {
-  return zone_public_config->log_data;
+  return (zone_public_config->log_data && sync_module_exports_data());
 }
 
 bool RGWSI_Zone::is_meta_master() const