diff options
| author | Chris Lu <chris.lu@gmail.com> | 2016-06-03 00:24:55 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2016-06-03 00:24:55 -0700 |
| commit | b456173eb8d72ad2a01fb53aa30d4b7b8179c205 (patch) | |
| tree | ef2b2e83a183e2f1209e81e3bad12cd793c0bf1d | |
| parent | 535b1610c81c9e65826e6808348a5796b17ab57f (diff) | |
| download | seaweedfs-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.go | 8 |
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 |
