aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-11-22 01:39:50 -0800
committerChris Lu <chris.lu@gmail.com>2019-11-22 01:39:50 -0800
commitfb3c9ed80d37a08dcf9f8f6a926e7734816a2a63 (patch)
tree524b8c65947b925b606573e19511b243d88c8298
parent4f3adcb5ab97d6e7316d6dc5154c59bdfac41d1d (diff)
downloadseaweedfs-fb3c9ed80d37a08dcf9f8f6a926e7734816a2a63.tar.xz
seaweedfs-fb3c9ed80d37a08dcf9f8f6a926e7734816a2a63.zip
shell: fs.meta.save missed directory data with more than 1024 entries
fix https://github.com/chrislusf/seaweedfs/issues/1130
-rw-r--r--weed/server/filer_grpc_server.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go
index 9c35e8846..feab11c79 100644
--- a/weed/server/filer_grpc_server.go
+++ b/weed/server/filer_grpc_server.go
@@ -40,11 +40,16 @@ func (fs *FilerServer) ListEntries(ctx context.Context, req *filer_pb.ListEntrie
limit = fs.option.DirListingLimit
}
+ paginationLimit := 1024
+ if limit < paginationLimit {
+ paginationLimit = limit
+ }
+
resp := &filer_pb.ListEntriesResponse{}
lastFileName := req.StartFromFileName
includeLastFile := req.InclusiveStartFrom
for limit > 0 {
- entries, err := fs.filer.ListDirectoryEntries(ctx, filer2.FullPath(req.Directory), lastFileName, includeLastFile, 1024)
+ entries, err := fs.filer.ListDirectoryEntries(ctx, filer2.FullPath(req.Directory), lastFileName, includeLastFile, paginationLimit)
if err != nil {
return nil, err
}
@@ -71,9 +76,12 @@ func (fs *FilerServer) ListEntries(ctx context.Context, req *filer_pb.ListEntrie
Attributes: filer2.EntryAttributeToPb(entry),
})
limit--
+ if limit == 0 {
+ return resp, nil
+ }
}
- if len(resp.Entries) < 1024 {
+ if len(entries) < paginationLimit {
break
}