aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2016-06-03 00:24:55 -0700
committerChris Lu <chris.lu@gmail.com>2016-06-03 00:24:55 -0700
commitb456173eb8d72ad2a01fb53aa30d4b7b8179c205 (patch)
treeef2b2e83a183e2f1209e81e3bad12cd793c0bf1d
parent535b1610c81c9e65826e6808348a5796b17ab57f (diff)
downloadseaweedfs-b456173eb8d72ad2a01fb53aa30d4b7b8179c205.tar.xz
seaweedfs-b456173eb8d72ad2a01fb53aa30d4b7b8179c205.zip
delete file storage when POST to update
PUT is used to update. But sometimes POST is also used to post the same file again. In this case, the actual file storage was not marked as deleted. This fix will try its best to delete the orphan files.
-rw-r--r--weed/server/filer_server_handlers_write.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go
index 188696213..b446704f2 100644
--- a/weed/server/filer_server_handlers_write.go
+++ b/weed/server/filer_server_handlers_write.go
@@ -139,6 +139,14 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) {
return
}
}
+
+ // also delete the old fid unless PUT operation
+ if r.Method != "PUT" {
+ if oldFid, err := fs.filer.FindFile(path); err == nil {
+ operation.DeleteFile(fs.master, oldFid, fs.jwt(oldFid))
+ }
+ }
+
glog.V(4).Infoln("saving", path, "=>", fileId)
if db_err := fs.filer.CreateFile(path, fileId); db_err != nil {
operation.DeleteFile(fs.master, fileId, fs.jwt(fileId)) //clean up