From ae3dedadba663f048afd0c16b4f874ab327ac234 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 17 Nov 2016 12:58:24 -0500 Subject: [PATCH] rgw: fix for unsafe change of rgw_zonegroup Fixes: http://tracker.ceph.com/issues/17962 Signed-off-by: Casey Bodley --- src/rgw/rgw_admin.cc | 6 ++++++ src/rgw/rgw_main.cc | 5 +++++ src/rgw/rgw_rados.cc | 8 -------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 86c0767d81893..5db4d55a8d8d8 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2245,6 +2245,12 @@ int main(int argc, char **argv) auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + + // for region -> zonegroup conversion (must happen before common_init_finish()) + if (!g_conf->rgw_region.empty() && g_conf->rgw_zonegroup.empty()) { + g_conf->set_val_or_die("rgw_zonegroup", g_conf->rgw_region.c_str()); + } + common_init_finish(g_ceph_context); rgw_user user_id; diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index 09e650e1dbd65..c2678e8cc91d1 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -284,6 +284,11 @@ int main(int argc, const char **argv) } } + // for region -> zonegroup conversion (must happen before common_init_finish()) + if (!g_conf->rgw_region.empty() && g_conf->rgw_zonegroup.empty()) { + g_conf->set_val_or_die("rgw_zonegroup", g_conf->rgw_region.c_str()); + } + check_curl(); if (g_conf->daemonize) { diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 1677d4d8422f5..8756480416fbe 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3411,14 +3411,6 @@ int RGWRados::convert_regionmap() */ int RGWRados::replace_region_with_zonegroup() { - if (!cct->_conf->rgw_region.empty() && cct->_conf->rgw_zonegroup.empty()) { - int ret = cct->_conf->set_val("rgw_zonegroup", cct->_conf->rgw_region, true, false); - if (ret < 0) { - ldout(cct, 0) << "failed to set rgw_zonegroup to " << cct->_conf->rgw_region << dendl; - return ret; - } - } - /* copy default region */ /* convert default region to default zonegroup */ string default_oid = cct->_conf->rgw_default_region_info_oid;