aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-09-03 19:17:39 -0700
committerChris Lu <chris.lu@gmail.com>2020-09-03 19:17:39 -0700
commit44b4ebf0ff440c9c5afa4a3e8e91bca61cc3d636 (patch)
treee12da121ecc78246b708192e7061e97c2c15f07e
parentb8f32bcab94a23cc5cb92f32fdd655a5b55ebb6d (diff)
downloadseaweedfs-44b4ebf0ff440c9c5afa4a3e8e91bca61cc3d636.tar.xz
seaweedfs-44b4ebf0ff440c9c5afa4a3e8e91bca61cc3d636.zip
filer: Redis cleanly delete directory
fix https://github.com/chrislusf/seaweedfs/issues/1448
-rw-r--r--weed/filer/redis2/universal_redis_store.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/weed/filer/redis2/universal_redis_store.go b/weed/filer/redis2/universal_redis_store.go
index c213b39a8..0374314c0 100644
--- a/weed/filer/redis2/universal_redis_store.go
+++ b/weed/filer/redis2/universal_redis_store.go
@@ -85,8 +85,12 @@ func (store *UniversalRedis2Store) FindEntry(ctx context.Context, fullpath util.
func (store *UniversalRedis2Store) DeleteEntry(ctx context.Context, fullpath util.FullPath) (err error) {
- _, err = store.Client.Del(string(fullpath)).Result()
+ _, err = store.Client.Del(genDirectoryListKey(string(fullpath))).Result()
+ if err != nil {
+ return fmt.Errorf("delete dir list %s : %v", fullpath, err)
+ }
+ _, err = store.Client.Del(string(fullpath)).Result()
if err != nil {
return fmt.Errorf("delete %s : %v", fullpath, err)
}
@@ -95,7 +99,7 @@ func (store *UniversalRedis2Store) DeleteEntry(ctx context.Context, fullpath uti
if name != "" {
_, err = store.Client.ZRem(genDirectoryListKey(dir), name).Result()
if err != nil {
- return fmt.Errorf("delete %s in parent dir: %v", fullpath, err)
+ return fmt.Errorf("DeleteEntry %s in parent dir: %v", fullpath, err)
}
}
@@ -106,14 +110,14 @@ func (store *UniversalRedis2Store) DeleteFolderChildren(ctx context.Context, ful
members, err := store.Client.ZRange(genDirectoryListKey(string(fullpath)), 0, -1).Result()
if err != nil {
- return fmt.Errorf("delete folder %s : %v", fullpath, err)
+ return fmt.Errorf("DeleteFolderChildren %s : %v", fullpath, err)
}
for _, fileName := range members {
path := util.NewFullPath(string(fullpath), fileName)
_, err = store.Client.Del(string(path)).Result()
if err != nil {
- return fmt.Errorf("delete %s in parent dir: %v", fullpath, err)
+ return fmt.Errorf("DeleteFolderChildren %s in parent dir: %v", fullpath, err)
}
}