]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: move specialized archive zone handling to handler
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 13 Nov 2018 00:17:49 +0000 (16:17 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Thu, 24 Jan 2019 04:19:02 +0000 (20:19 -0800)
Don't have a special check in the generic meta handler, do it
in the handler itself

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_metadata.cc

index d275467c0cbdfad5b9923ab8ed724e8c55d65335..1a128d0940e462a110145cc78ea26fb809d5997d 100644 (file)
@@ -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 {
index dc1e03c3d4182ae3a61ef1b5ffa45c5ba6ce5e11..3629ce653288010a5221ee3c04ba3c451d9d226b 100644 (file)
@@ -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;