From 4be51c07014b1072a4e9dbbf9303a13e94fefe5e Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 31 Jan 2021 20:11:44 -0800 Subject: [PATCH] filer: leveldb and hbase may miss files when listing large directories more than 1024 fix https://github.com/chrislusf/seaweedfs/issues/1768 --- weed/filer/hbase/hbase_store.go | 5 +++-- weed/filer/leveldb/leveldb_store.go | 2 +- weed/filer/leveldb2/leveldb2_store.go | 2 +- weed/filer/leveldb3/leveldb3_store.go | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/weed/filer/hbase/hbase_store.go b/weed/filer/hbase/hbase_store.go index 2e4491515..e0d878ca7 100644 --- a/weed/filer/hbase/hbase_store.go +++ b/weed/filer/hbase/hbase_store.go @@ -185,8 +185,6 @@ func (store *HbaseStore) ListDirectoryPrefixedEntries(ctx context.Context, dirPa continue } - lastFileName = fileName - value := cell.Value if fileName == startFileName && !includeStartFile { @@ -197,6 +195,9 @@ func (store *HbaseStore) ListDirectoryPrefixedEntries(ctx context.Context, dirPa if limit < 0 { break } + + lastFileName = fileName + entry := &filer.Entry{ FullPath: fullpath, } diff --git a/weed/filer/leveldb/leveldb_store.go b/weed/filer/leveldb/leveldb_store.go index f0ae64769..ac0ad4ba6 100644 --- a/weed/filer/leveldb/leveldb_store.go +++ b/weed/filer/leveldb/leveldb_store.go @@ -187,11 +187,11 @@ func (store *LevelDBStore) ListDirectoryPrefixedEntries(ctx context.Context, dir if fileName == startFileName && !includeStartFile { continue } - lastFileName = fileName limit-- if limit < 0 { break } + lastFileName = fileName entry := &filer.Entry{ FullPath: weed_util.NewFullPath(string(dirPath), fileName), } diff --git a/weed/filer/leveldb2/leveldb2_store.go b/weed/filer/leveldb2/leveldb2_store.go index 965721460..c76340da4 100644 --- a/weed/filer/leveldb2/leveldb2_store.go +++ b/weed/filer/leveldb2/leveldb2_store.go @@ -196,11 +196,11 @@ func (store *LevelDB2Store) ListDirectoryPrefixedEntries(ctx context.Context, di if fileName == startFileName && !includeStartFile { continue } - lastFileName = fileName limit-- if limit < 0 { break } + lastFileName = fileName entry := &filer.Entry{ FullPath: weed_util.NewFullPath(string(dirPath), fileName), } diff --git a/weed/filer/leveldb3/leveldb3_store.go b/weed/filer/leveldb3/leveldb3_store.go index 24e00edc7..c81ea7bbe 100644 --- a/weed/filer/leveldb3/leveldb3_store.go +++ b/weed/filer/leveldb3/leveldb3_store.go @@ -316,11 +316,11 @@ func (store *LevelDB3Store) ListDirectoryPrefixedEntries(ctx context.Context, di if fileName == startFileName && !includeStartFile { continue } - lastFileName = fileName limit-- if limit < 0 { break } + lastFileName = fileName entry := &filer.Entry{ FullPath: weed_util.NewFullPath(string(dirPath), fileName), }