]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Handle stale bucket info in RGWDeleteBucketWebsite
authorAdam C. Emerson <aemerson@redhat.com>
Fri, 17 Nov 2017 21:05:06 +0000 (16:05 -0500)
committerAdam C. Emerson <aemerson@redhat.com>
Thu, 4 Jan 2018 22:42:38 +0000 (17:42 -0500)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit f4d274248e43cb38ff2b27782c010b2c35b12b2b)
Fixes: http://tracker.ceph.com/issues/22517
src/rgw/rgw_op.cc

index 4e14b61e6813e5d8c0dca9ca6598c08e5092b90b..03c8b9eef3053be88877ae9d166c9c09591b1834 100644 (file)
@@ -2221,10 +2221,13 @@ void RGWDeleteBucketWebsite::pre_exec()
 
 void RGWDeleteBucketWebsite::execute()
 {
-  s->bucket_info.has_website = false;
-  s->bucket_info.website_conf = RGWBucketWebsiteConf();
-
-  op_ret = store->put_bucket_instance_info(s->bucket_info, false, real_time(), &s->bucket_attrs);
+  op_ret = retry_raced_bucket_write(store, s, [this] {
+      s->bucket_info.has_website = false;
+      s->bucket_info.website_conf = RGWBucketWebsiteConf();
+      op_ret = store->put_bucket_instance_info(s->bucket_info, false,
+                                              real_time(), &s->bucket_attrs);
+      return op_ret;
+    });
   if (op_ret < 0) {
     ldout(s->cct, 0) << "NOTICE: put_bucket_info on bucket=" << s->bucket.name << " returned err=" << op_ret << dendl;
     return;