diff options
Diffstat (limited to 'weed/pb')
| -rw-r--r-- | weed/pb/filer_pb/filer_client.go | 16 | ||||
| -rw-r--r-- | weed/pb/filer_pb/filer_client_bfs.go | 3 |
2 files changed, 13 insertions, 6 deletions
diff --git a/weed/pb/filer_pb/filer_client.go b/weed/pb/filer_pb/filer_client.go index c5d863262..73b66472d 100644 --- a/weed/pb/filer_pb/filer_client.go +++ b/weed/pb/filer_pb/filer_client.go @@ -56,19 +56,21 @@ func GetEntry(filerClient FilerClient, fullFilePath util.FullPath) (entry *Entry return } -func ReadDirAllEntries(filerClient FilerClient, fullDirPath util.FullPath, prefix string, fn func(entry *Entry, isLast bool)) (err error) { +type EachEntryFunciton func(entry *Entry, isLast bool) error + +func ReadDirAllEntries(filerClient FilerClient, fullDirPath util.FullPath, prefix string, fn EachEntryFunciton) (err error) { return doList(filerClient, fullDirPath, prefix, fn, "", false, math.MaxUint32) } -func List(filerClient FilerClient, parentDirectoryPath, prefix string, fn func(entry *Entry, isLast bool), startFrom string, inclusive bool, limit uint32) (err error) { +func List(filerClient FilerClient, parentDirectoryPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) { return doList(filerClient, util.FullPath(parentDirectoryPath), prefix, fn, startFrom, inclusive, limit) } -func doList(filerClient FilerClient, fullDirPath util.FullPath, prefix string, fn func(entry *Entry, isLast bool), startFrom string, inclusive bool, limit uint32) (err error) { +func doList(filerClient FilerClient, fullDirPath util.FullPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) { err = filerClient.WithFilerClient(func(client SeaweedFilerClient) error { @@ -92,7 +94,9 @@ func doList(filerClient FilerClient, fullDirPath util.FullPath, prefix string, f if recvErr != nil { if recvErr == io.EOF { if prevEntry != nil { - fn(prevEntry, true) + if err := fn(prevEntry, true); err != nil { + return err + } } break } else { @@ -100,7 +104,9 @@ func doList(filerClient FilerClient, fullDirPath util.FullPath, prefix string, f } } if prevEntry != nil { - fn(prevEntry, false) + if err := fn(prevEntry, false); err != nil { + return err + } } prevEntry = resp.Entry } diff --git a/weed/pb/filer_pb/filer_client_bfs.go b/weed/pb/filer_pb/filer_client_bfs.go index 7c9a8ae28..4e5b65f12 100644 --- a/weed/pb/filer_pb/filer_client_bfs.go +++ b/weed/pb/filer_pb/filer_client_bfs.go @@ -45,7 +45,7 @@ func TraverseBfs(filerClient FilerClient, parentPath util.FullPath, fn func(pare func processOneDirectory(filerClient FilerClient, parentPath util.FullPath, queue *util.Queue, jobQueueWg *sync.WaitGroup, fn func(parentPath util.FullPath, entry *Entry)) (err error) { - return ReadDirAllEntries(filerClient, parentPath, "", func(entry *Entry, isLast bool) { + return ReadDirAllEntries(filerClient, parentPath, "", func(entry *Entry, isLast bool) error { fn(parentPath, entry) @@ -57,6 +57,7 @@ func processOneDirectory(filerClient FilerClient, parentPath util.FullPath, queu jobQueueWg.Add(1) queue.Enqueue(util.FullPath(subDir)) } + return nil }) } |
