diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-10-13 11:21:13 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-10-13 11:21:13 -0700 |
| commit | 9b4f7fed14aa23115b896cc19c909b6c8f8db336 (patch) | |
| tree | 910adfb5a8758388797b05f19f4b002e934e308c /weed/filesys/meta_cache | |
| parent | 3f7d1d1bf146eaeac3ddcd96e3d8de088bdf97ce (diff) | |
| download | seaweedfs-9b4f7fed14aa23115b896cc19c909b6c8f8db336.tar.xz seaweedfs-9b4f7fed14aa23115b896cc19c909b6c8f8db336.zip | |
mount: report filer IO error
related to https://github.com/chrislusf/seaweedfs/issues/1530
Diffstat (limited to 'weed/filesys/meta_cache')
| -rw-r--r-- | weed/filesys/meta_cache/meta_cache.go | 6 | ||||
| -rw-r--r-- | weed/filesys/meta_cache/meta_cache_init.go | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/weed/filesys/meta_cache/meta_cache.go b/weed/filesys/meta_cache/meta_cache.go index 247f0ce81..5ae4c1440 100644 --- a/weed/filesys/meta_cache/meta_cache.go +++ b/weed/filesys/meta_cache/meta_cache.go @@ -2,6 +2,7 @@ package meta_cache import ( "context" + "fmt" "os" "sync" @@ -116,6 +117,11 @@ func (mc *MetaCache) ListDirectoryEntries(ctx context.Context, dirPath util.Full mc.RLock() defer mc.RUnlock() + + if !mc.visitedBoundary.HasVisited(dirPath) { + return nil, fmt.Errorf("unsynchronized dir: %v", dirPath) + } + entries, err := mc.localStore.ListDirectoryEntries(ctx, dirPath, startFileName, includeStartFile, limit) if err != nil { return nil, err diff --git a/weed/filesys/meta_cache/meta_cache_init.go b/weed/filesys/meta_cache/meta_cache_init.go index 455a8772c..3e1719224 100644 --- a/weed/filesys/meta_cache/meta_cache_init.go +++ b/weed/filesys/meta_cache/meta_cache_init.go @@ -10,9 +10,9 @@ import ( "github.com/chrislusf/seaweedfs/weed/util" ) -func EnsureVisited(mc *MetaCache, client filer_pb.FilerClient, dirPath util.FullPath) { +func EnsureVisited(mc *MetaCache, client filer_pb.FilerClient, dirPath util.FullPath) error { - mc.visitedBoundary.EnsureVisited(dirPath, func(path util.FullPath) (childDirectories []string, err error) { + return mc.visitedBoundary.EnsureVisited(dirPath, func(path util.FullPath) (childDirectories []string, err error) { glog.V(4).Infof("ReadDirAllEntries %s ...", path) |
