From b456173eb8d72ad2a01fb53aa30d4b7b8179c205 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 3 Jun 2016 00:24:55 -0700 Subject: [PATCH] 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. --- weed/server/filer_server_handlers_write.go | 8 ++++++++ 1 file changed, 8 insertions(+) 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