aboutsummaryrefslogtreecommitdiff
path: root/go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2014-09-04 19:34:43 -0700
committerChris Lu <chris.lu@gmail.com>2014-09-04 19:34:43 -0700
commita092794804b2f7cbd656e439305d29bfa96ad2b9 (patch)
treed26d6d5fd8ce79b4ce499f14a0736052836e131e /go
parent4be5ccd0c85b82f0faae2905dd51340b2d84f98b (diff)
downloadseaweedfs-a092794804b2f7cbd656e439305d29bfa96ad2b9.tar.xz
seaweedfs-a092794804b2f7cbd656e439305d29bfa96ad2b9.zip
use error to report error
Diffstat (limited to 'go')
-rw-r--r--go/filer/directory_in_map.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/go/filer/directory_in_map.go b/go/filer/directory_in_map.go
index 051ff31fe..46a626f77 100644
--- a/go/filer/directory_in_map.go
+++ b/go/filer/directory_in_map.go
@@ -28,7 +28,7 @@ type DirectoryManagerInMap struct {
isLoading bool
}
-func (dm *DirectoryManagerInMap) NewDirectoryEntryInMap(parent *DirectoryEntryInMap, name string) (d *DirectoryEntryInMap) {
+func (dm *DirectoryManagerInMap) NewDirectoryEntryInMap(parent *DirectoryEntryInMap, name string) (d *DirectoryEntryInMap, err error) {
writeLock.Lock()
defer writeLock.Unlock()
d = &DirectoryEntryInMap{Name: name, Parent: parent, SubDirectories: make(map[string]*DirectoryEntryInMap)}
@@ -38,7 +38,7 @@ func (dm *DirectoryManagerInMap) NewDirectoryEntryInMap(parent *DirectoryEntryIn
}
n := len(parts)
if n <= 0 {
- return d
+ return nil, fmt.Errorf("Failed to create folder %s/%s", parent.Name, name)
}
for i := 0; i < n/2; i++ {
parts[i], parts[n-1-i] = parts[n-1-i], parts[i]
@@ -46,7 +46,7 @@ func (dm *DirectoryManagerInMap) NewDirectoryEntryInMap(parent *DirectoryEntryIn
dm.max++
d.Id = dm.max
dm.log("add", "/"+strings.Join(parts, "/"), strconv.Itoa(int(d.Id)))
- return d
+ return d, nil
}
func (dm *DirectoryManagerInMap) log(words ...string) {
@@ -162,7 +162,11 @@ func (dm *DirectoryManagerInMap) loadDirectory(dirPath string, dirId DirectoryId
if i != len(parts)-1 {
return fmt.Errorf("%s should be created after parent %s!", dirPath, parts[i])
}
- sub = dm.NewDirectoryEntryInMap(dir, parts[i])
+ var err error
+ sub, err = dm.NewDirectoryEntryInMap(dir, parts[i])
+ if err != nil {
+ return err
+ }
if sub.Id != dirId {
return fmt.Errorf("%s should be have id %v instead of %v!", dirPath, sub.Id, dirId)
}
@@ -183,7 +187,11 @@ func (dm *DirectoryManagerInMap) makeDirectory(dirPath string) (dir *DirectoryEn
for i := 1; i < len(parts); i++ {
sub, ok := dir.SubDirectories[parts[i]]
if !ok {
- sub = dm.NewDirectoryEntryInMap(dir, parts[i])
+ var err error
+ sub, err = dm.NewDirectoryEntryInMap(dir, parts[i])
+ if err != nil {
+ return nil, false
+ }
dir.SubDirectories[parts[i]] = sub
created = true
}