}
if (ptier_type) {
zone.tier_type = *ptier_type;
+ if (!store->get_sync_modules_manager()->get_module(*ptier_type, nullptr)) {
+ ldout(cct, 0) << "ERROR: could not found sync module: " << *ptier_type
+ << ", valid sync modules: "
+ << store->get_sync_modules_manager()->get_registered_module_names()
+ << dendl;
+ return -ENOENT;
+ }
}
if (psync_from_all) {
ret = sync_modules_manager->create_instance(cct, zone_public_config.tier_type, zone_params.tier_config, &sync_module);
if (ret < 0) {
lderr(cct) << "ERROR: failed to init sync module instance, ret=" << ret << dendl;
+ if (ret == -ENOENT) {
+ lderr(cct) << "ERROR: " << zone_public_config.tier_type
+ << " sync module does not exist. valid sync modules: "
+ << sync_modules_manager->get_registered_module_names()
+ << dendl;
+ }
return ret;
}
}
if (iter == modules.end()) {
return false;
}
- *module = iter->second;
+ if (module != nullptr) {
+ *module = iter->second;
+ }
return true;
}
return module.get()->create_instance(cct, config, instance);
}
+
+ vector<string> get_registered_module_names() const {
+ vector<string> names;
+ for (auto& i: modules) {
+ if (!i.first.empty()) {
+ names.push_back(i.first);
+ }
+ }
+ return names;
+ }
};
class RGWStatRemoteObjCBCR : public RGWCoroutine {