Browse Source

make List correctly judge whether it is the last file

pull/1892/head
wuh-fnst 4 years ago
parent
commit
4c1d945e46
  1. 14
      weed/pb/filer_pb/filer_client.go

14
weed/pb/filer_pb/filer_client.go

@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"io"
"math"
"os"
"strings"
"time"
@ -101,12 +102,16 @@ func SeaweedList(client SeaweedFilerClient, parentDirectoryPath, prefix string,
}
func doSeaweedList(client SeaweedFilerClient, fullDirPath util.FullPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) {
// Redundancy limit to make it correctly judge whether it is the last file.
redLimit := limit
if limit != math.MaxInt32 && limit != 0{
redLimit = limit + 1
}
request := &ListEntriesRequest{
Directory: string(fullDirPath),
Prefix: prefix,
StartFromFileName: startFrom,
Limit: limit,
Limit: redLimit,
InclusiveStartFrom: inclusive,
}
@ -119,6 +124,7 @@ func doSeaweedList(client SeaweedFilerClient, fullDirPath util.FullPath, prefix
}
var prevEntry *Entry
count := 0
for {
resp, recvErr := stream.Recv()
if recvErr != nil {
@ -139,6 +145,10 @@ func doSeaweedList(client SeaweedFilerClient, fullDirPath util.FullPath, prefix
}
}
prevEntry = resp.Entry
count++
if count > int(limit) && limit != 0 {
prevEntry = nil
}
}
return nil

Loading…
Cancel
Save