From 91de9b51265e64a14b3d8e53de762b0baa022a08 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Wed, 4 Nov 2015 15:27:06 +0100 Subject: [PATCH] rgw: workaround to clear location constrain when using default zonegroup Signed-off-by: Orit Wasserman --- src/rgw/rgw_common.h | 1 + src/rgw/rgw_op.cc | 7 +++++-- src/rgw/rgw_rest_s3.cc | 12 ++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index efc55d7eaced6..981045c8b634c 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -1106,6 +1106,7 @@ struct req_state { ACLOwner bucket_owner; ACLOwner owner; + string zonegroup_name; string zonegroup_endpoint; string bucket_instance_id; int bucket_instance_shard_id; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 259ed6371c662..b6b55753f5402 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -410,8 +410,11 @@ static int rgw_build_bucket_policies(RGWRados *store, struct req_state *s) RGWZoneGroup zonegroup; ret = store->get_zonegroup(s->bucket_info.zonegroup, zonegroup); - if (!ret && !zonegroup.endpoints.empty()) { - s->zonegroup_endpoint = zonegroup.endpoints.front(); + if (!ret) { + if (!zonegroup.endpoints.empty()) { + s->zonegroup_endpoint = zonegroup.endpoints.front(); + } + s->zonegroup_name = zonegroup.get_name(); } if (s->bucket_exists && !store->get_zonegroup().equals(s->bucket_info.zonegroup)) { diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index be6ac7b745f79..b8399ed58d585 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -462,15 +462,15 @@ void RGWGetBucketLocation_ObjStore_S3::send_response() end_header(s, this); dump_start(s); - string zonegroup = s->bucket_info.zonegroup; + RGWZoneGroup zonegroup; string api_name; - map::iterator iter = store->zonegroup_map.zonegroups.find(zonegroup); - if (iter != store->zonegroup_map.zonegroups.end()) { - api_name = iter->second.api_name; + int ret = store->get_zonegroup(s->bucket_info.zonegroup, zonegroup); + if (ret >= 0) { + api_name = zonegroup.api_name; } else { - if (zonegroup != "default") { - api_name = zonegroup; + if (api_name != "default") { + api_name = s->bucket_info.zonegroup; } } -- 2.39.5