/* 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 {
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;