aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStepan Bujnak <stepan.bujnak@gmail.com>2017-03-11 02:52:04 -0800
committerStepan Bujnak <stepan.bujnak@gmail.com>2017-03-11 02:52:04 -0800
commita72c92e55f3916cb38923c4b12a0370633c4c9ed (patch)
treeeff75b9122c148e8828747b3e94891a3d268eab7
parentb20cdff82d58e78f7f6b5e3ca77b0dc501849d59 (diff)
downloadseaweedfs-a72c92e55f3916cb38923c4b12a0370633c4c9ed.tar.xz
seaweedfs-a72c92e55f3916cb38923c4b12a0370633c4c9ed.zip
Added locking on the filer move operation
-rw-r--r--weed/filer/embedded_filer/filer_embedded.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/weed/filer/embedded_filer/filer_embedded.go b/weed/filer/embedded_filer/filer_embedded.go
index 27299eb40..4a335058b 100644
--- a/weed/filer/embedded_filer/filer_embedded.go
+++ b/weed/filer/embedded_filer/filer_embedded.go
@@ -5,6 +5,7 @@ import (
"fmt"
"path/filepath"
"strings"
+ "sync"
"github.com/chrislusf/seaweedfs/weed/filer"
"github.com/chrislusf/seaweedfs/weed/operation"
@@ -14,6 +15,7 @@ type FilerEmbedded struct {
master string
directories *DirectoryManagerInMap
files *FileListInLevelDb
+ mvMutex sync.Mutex
}
func NewFilerEmbedded(master string, dir string) (filer *FilerEmbedded, err error) {
@@ -121,6 +123,9 @@ mv fromFile toDir
mv fromFile toFile
*/
func (filer *FilerEmbedded) Move(fromPath string, toPath string) error {
+ filer.mvMutex.Lock()
+ defer filer.mvMutex.Unlock()
+
if _, dir_err := filer.FindDirectory(fromPath); dir_err == nil {
if _, err := filer.FindDirectory(toPath); err == nil {
// move folder under an existing folder