]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgwlc: remove lc entry on bucket delete 44729/head
authorMatt Benjamin <mbenjamin@redhat.com>
Tue, 4 Jan 2022 16:22:00 +0000 (11:22 -0500)
committerCory Snyder <csnyder@iland.com>
Wed, 16 Mar 2022 13:16:49 +0000 (09:16 -0400)
Buckets with lifecycle policies installed have a state entry that
must also be deleted when the bucket is removed.

Fixes: https://tracker.ceph.com/issues/46728
N.b., should really be generic, not specific to the RADOS store, but
there doesn't seem to be a clean model for implementing generic side
effects in Zipper, currently.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit cc1e812a003e2af74fe0c69ccae08dd7aa68bbe0)

Conflicts:
src/rgw/rgw_sal_rados.cc

Cherry-pick notes:
- must pass this->info as first param to remove_bucket_config
- conflict with includes

src/rgw/rgw_sal_rados.cc

index 28f1cef9ffefd83afbef14739677cc273d217270..48bc7b53e94ed525a1e98ee407bcd276667358bb 100644 (file)
@@ -30,6 +30,8 @@
 
 #include "rgw_zone.h"
 #include "rgw_rest_conn.h"
+#include "rgw_service.h"
+#include "rgw_lc.h"
 #include "services/svc_sys_obj.h"
 #include "services/svc_zone.h"
 #include "services/svc_tier_rados.h"
@@ -132,6 +134,10 @@ int RGWRadosBucket::remove_bucket(const DoutPrefixProvider *dpp,
     return ret;
   }
 
+  // remove lifecycle config, if any (XXX note could be made generic)
+  (void) store->getRados()->get_lc()->remove_bucket_config(
+    this->info, get_attrs());
+
   ret = store->ctl()->bucket->sync_user_stats(dpp, info.owner, info, y);
   if (ret < 0) {
      ldout(store->ctx(), 1) << "WARNING: failed sync user stats before bucket delete. ret=" <<  ret << dendl;