diff options
| author | Chris Lu <chris.lu@gmail.com> | 2014-09-04 19:34:43 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2014-09-04 19:34:43 -0700 |
| commit | a092794804b2f7cbd656e439305d29bfa96ad2b9 (patch) | |
| tree | d26d6d5fd8ce79b4ce499f14a0736052836e131e /go | |
| parent | 4be5ccd0c85b82f0faae2905dd51340b2d84f98b (diff) | |
| download | seaweedfs-a092794804b2f7cbd656e439305d29bfa96ad2b9.tar.xz seaweedfs-a092794804b2f7cbd656e439305d29bfa96ad2b9.zip | |
use error to report error
Diffstat (limited to 'go')
| -rw-r--r-- | go/filer/directory_in_map.go | 18 |
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 } |
