From 66df0d45824b95ae2d22bb77fa3bd1f485173e04 Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Fri, 17 Nov 2017 16:03:13 -0500 Subject: [PATCH] rgw: Handle stale bucket info in RGWSetBucketWebsite Fixes: http://tracker.ceph.com/issues/22517 Signed-off-by: Adam C. Emerson (cherry picked from commit b2b7385f194def1025a8947bab876c9856b06400) Signed-off-by: Matt Benjamin --- src/rgw/rgw_op.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 0f13d17bc7d3f..59b37bf32fc3b 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1702,10 +1702,14 @@ void RGWSetBucketWebsite::execute() if (op_ret < 0) return; - s->bucket_info.has_website = true; - s->bucket_info.website_conf = website_conf; + op_ret = retry_raced_bucket_write(store, s, [this] { + s->bucket_info.has_website = true; + s->bucket_info.website_conf = website_conf; + op_ret = store->put_bucket_instance_info(s->bucket_info, false, + real_time(), &s->bucket_attrs); + return op_ret; + }); - op_ret = store->put_bucket_instance_info(s->bucket_info, false, real_time(), &s->bucket_attrs); if (op_ret < 0) { ldout(s->cct, 0) << "NOTICE: put_bucket_info on bucket=" << s->bucket.name << " returned err=" << op_ret << dendl; return; -- 2.39.5