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 <yehuda@redhat.com>
(cherry picked from commit
1eec00bef1e5540bf3e31d1f8fb1645eb64b1e62)
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;
class RGWSetBucketVersioning : public RGWOp {
protected:
bool enable_versioning;
+ bufferlist in_data;
public:
RGWSetBucketVersioning() : enable_versioning(false) {}
goto done;
}
+ 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);
done: