diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-11-22 01:39:50 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-11-22 01:39:50 -0800 |
| commit | fb3c9ed80d37a08dcf9f8f6a926e7734816a2a63 (patch) | |
| tree | 524b8c65947b925b606573e19511b243d88c8298 | |
| parent | 4f3adcb5ab97d6e7316d6dc5154c59bdfac41d1d (diff) | |
| download | seaweedfs-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.go | 12 |
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 } |
