From: Yehuda Sadeh Date: Tue, 13 Nov 2018 00:17:49 +0000 (-0800) Subject: rgw: move specialized archive zone handling to handler X-Git-Tag: v14.1.0~269^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b08d84b80adaf6c7a02aa1a42f27857fbb38486d;p=ceph-ci.git rgw: move specialized archive zone handling to handler Don't have a special check in the generic meta handler, do it in the handler itself Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index d275467c0cb..1a128d0940e 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -2630,6 +2630,31 @@ public: /* idempotent */ return 0; } + + int put(RGWRados *store, string& entry, RGWObjVersionTracker& objv_tracker, + real_time mtime, JSONObj *obj, sync_type_t sync_type) override { + if (entry.find("-deleted-") != string::npos) { + RGWObjVersionTracker ot; + RGWMetadataObject *robj; + int ret = get(store, entry, &robj); + if (ret != -ENOENT) { + if (ret < 0) { + return ret; + } + ot.read_version = robj->get_version(); + delete robj; + + ret = remove(store, entry, ot); + if (ret < 0) { + return ret; + } + } + } + + return RGWBucketMetadataHandler::put(store, entry, objv_tracker, + mtime, obj, sync_type); + } + }; class RGWBucketInstanceMetadataHandler : public RGWMetadataHandler { diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index dc1e03c3d41..3629ce65328 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -770,16 +770,6 @@ int RGWMetadataManager::put(string& metadata_key, bufferlist& bl, return ret; } - // archive existing bucket if needed - if (store->get_zone().tier_type == "archive") { - if (handler->get_type() == "bucket") { - size_t found = metadata_key.find("-deleted-"); - if(found != string::npos) { - remove(metadata_key); - } - } - } - JSONParser parser; if (!parser.parse(bl.c_str(), bl.length())) { return -EINVAL;