aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-05-11 02:27:57 -0700
committerChris Lu <chris.lu@gmail.com>2018-05-11 02:27:57 -0700
commita808df501932f4691e8cb5b20ee438b3f604bc38 (patch)
treea406e4245042bd1b8cc070369a5be8a84619e497
parent8a1d640dc4fd451e34f8e21a66d1ca1231c03585 (diff)
downloadseaweedfs-a808df501932f4691e8cb5b20ee438b3f604bc38.tar.xz
seaweedfs-a808df501932f4691e8cb5b20ee438b3f604bc38.zip
visit parent folder first
-rw-r--r--weed/filer2/filer.go10
-rw-r--r--weed/filer2/filer_test.go10
2 files changed, 11 insertions, 9 deletions
diff --git a/weed/filer2/filer.go b/weed/filer2/filer.go
index 0851b4142..0592c7848 100644
--- a/weed/filer2/filer.go
+++ b/weed/filer2/filer.go
@@ -39,7 +39,7 @@ func (f *Filer) CreateEntry(entry Entry) (error) {
3. add the file entry
*/
- f.recursivelyEnsureDirectory(entry.Dir, func(parent, name string) error {
+ recursivelyEnsureDirectory(entry.Dir, func(parent, name string) error {
return nil
})
@@ -66,7 +66,7 @@ func (f *Filer) UpdateEntry(entry Entry) (error) {
return f.store.UpdateEntry(entry)
}
-func (f *Filer) recursivelyEnsureDirectory(fullPath string, fn func(parent, name string) error) (error) {
+func recursivelyEnsureDirectory(fullPath string, fn func(parent, name string) error) (error) {
if strings.HasSuffix(fullPath, "/") {
fullPath = fullPath[0:len(fullPath)-1]
}
@@ -82,11 +82,15 @@ func (f *Filer) recursivelyEnsureDirectory(fullPath string, fn func(parent, name
parentDirPath = "/"
}
+ if err := recursivelyEnsureDirectory(parentDirPath, fn); err != nil {
+ return err
+ }
+
if err := fn(parentDirPath, dirName); err != nil {
return err
}
- return f.recursivelyEnsureDirectory(parentDirPath, fn)
+ return nil
}
func (f *Filer) cacheGetDirectory(dirpath string) (error) {
diff --git a/weed/filer2/filer_test.go b/weed/filer2/filer_test.go
index 0cefb679a..bafc25cf0 100644
--- a/weed/filer2/filer_test.go
+++ b/weed/filer2/filer_test.go
@@ -7,21 +7,19 @@ import (
)
func TestRecursion(t *testing.T) {
- filer := NewFiler("")
-
fullPath := "/home/chris/some/file/abc.jpg"
expected := []string{
- "/home/chris/some", "file",
- "/home/chris", "some",
- "/home", "chris",
"/", "home",
+ "/home", "chris",
+ "/home/chris", "some",
+ "/home/chris/some", "file",
}
dir, _ := filepath.Split(fullPath)
i := 0
- filer.recursivelyEnsureDirectory(dir, func(parent, name string) error {
+ recursivelyEnsureDirectory(dir, func(parent, name string) error {
if parent != expected[i] || name != expected[i+1] {
t.Errorf("recursive directory is wrong! parent=%s dirName=%s", parent, name)
}