RGWRados spawns a RGWDataSyncProcessorThread for each zone in
data_sync_source_zones, but these threads would fail to initialize
with ENOTSUP, and RGWOp_DATALog_Status would crash calling into an
uninitialized RGWDataSyncStatusManager
Fixes: https://tracker.ceph.com/issues/44068
Signed-off-by: Casey Bodley <cbodley@redhat.com>
return ret;
}
+ auto sync_modules = sync_modules_svc->get_manager();
RGWSyncModuleRef sm;
- if (!sync_modules_svc->get_manager()->get_module(zone_public_config->tier_type, &sm)) {
+ if (!sync_modules->get_module(zone_public_config->tier_type, &sm)) {
lderr(cct) << "ERROR: tier type not found: " << zone_public_config->tier_type << dendl;
return -EINVAL;
}
bool zone_is_target = target_zones.find(z.id) != target_zones.end();
if (zone_is_source || zone_is_target) {
- if (zone_is_source) {
+ if (zone_is_source && sync_modules->supports_data_export(z.tier_type)) {
data_sync_source_zones.push_back(&z);
}
if (zone_is_target) {