Skip to content

Commit

Permalink
rgw: Disable logging for datalog and bilog if zone doesn't export data
Browse files Browse the repository at this point in the history
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 85f0cb5)
  • Loading branch information
soumyakoduri committed May 23, 2023
1 parent 201f430 commit 2e411d5
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/rgw/driver/rados/rgw_bucket_sync.cc
Expand Up @@ -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;
}
Expand Down
14 changes: 7 additions & 7 deletions src/rgw/driver/rados/rgw_rados.cc
Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/rgw/services/svc_zone.cc
Expand Up @@ -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
Expand Down

0 comments on commit 2e411d5

Please sign in to comment.