From: Yehuda Sadeh Date: Fri, 1 Jul 2016 00:36:16 +0000 (-0700) Subject: rgw: forward input data when forwarding set_bucket_version to master X-Git-Tag: ses5-milestone5~521^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F10077%2Fhead;p=ceph.git rgw: forward input data when forwarding set_bucket_version to master Fixes: http://tracker.ceph.com/issues/16494 Needed to keep input data around to be forwarded correctly. Also, master does not send any data back, so don't try to parse anything. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f198ea6c3093..210ba621abbb 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1651,20 +1651,17 @@ void RGWSetBucketVersioning::pre_exec() void RGWSetBucketVersioning::execute() { + op_ret = get_params(); + if (op_ret < 0) + return; + if (!store->is_meta_master()) { - bufferlist in_data; - JSONParser jp; - op_ret = forward_request_to_master(s, NULL, store, in_data, &jp); + op_ret = forward_request_to_master(s, NULL, store, in_data, nullptr); if (op_ret < 0) { ldout(s->cct, 20) << __func__ << "forward_request_to_master returned ret=" << op_ret << dendl; } return; } - - op_ret = get_params(); - - if (op_ret < 0) - return; if (enable_versioning) { s->bucket_info.flags |= BUCKET_VERSIONED; diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index 03f857dadc13..49018f457c78 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -446,6 +446,7 @@ public: class RGWSetBucketVersioning : public RGWOp { protected: bool enable_versioning; + bufferlist in_data; public: RGWSetBucketVersioning() : enable_versioning(false) {} diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 27cc257738ca..31cbca000eb7 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -746,6 +746,11 @@ int RGWSetBucketVersioning_ObjStore_S3::get_params() return r; } + if (!store->is_meta_master()) { + /* only need to keep this data around if we're not meta master */ + in_data.append(data, len); + } + r = parser.get_versioning_status(&enable_versioning); return r;