aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-06-05 13:09:33 -0700
committerChris Lu <chris.lu@gmail.com>2021-06-05 13:09:37 -0700
commite6ba2f9c372f8f160003dac63d51b6dde0a512de (patch)
tree1301bc441fa12b327c73085ae013219f298e2f39
parentd7638b73b566f00ae1b3b05747592e4b0dd63d98 (diff)
downloadseaweedfs-e6ba2f9c372f8f160003dac63d51b6dde0a512de.tar.xz
seaweedfs-e6ba2f9c372f8f160003dac63d51b6dde0a512de.zip
verbose but cleaner logic to invalidate fuse cache
-rw-r--r--weed/filesys/meta_cache/meta_cache_subscribe.go21
1 files changed, 15 insertions, 6 deletions
diff --git a/weed/filesys/meta_cache/meta_cache_subscribe.go b/weed/filesys/meta_cache/meta_cache_subscribe.go
index 675ef4077..747ac3cb9 100644
--- a/weed/filesys/meta_cache/meta_cache_subscribe.go
+++ b/weed/filesys/meta_cache/meta_cache_subscribe.go
@@ -40,12 +40,21 @@ func SubscribeMetaEvents(mc *MetaCache, selfSignature int32, client filer_pb.Fil
newEntry = filer.FromPbEntry(dir, message.NewEntry)
}
err := mc.AtomicUpdateEntryFromFiler(context.Background(), oldPath, newEntry)
- if err == nil && message.OldEntry != nil {
- oldKey := util.NewFullPath(resp.Directory, message.OldEntry.Name)
- mc.invalidateFunc(oldKey)
- if message.NewEntry != nil {
- key := util.NewFullPath(dir, message.NewEntry.Name)
- mc.invalidateFunc(key)
+ if err == nil {
+ if message.OldEntry != nil && message.NewEntry != nil {
+ if message.OldEntry.Name == message.NewEntry.Name {
+ // no need to invalidate
+ } else {
+ oldKey := util.NewFullPath(resp.Directory, message.OldEntry.Name)
+ mc.invalidateFunc(oldKey)
+ newKey := util.NewFullPath(dir, message.NewEntry.Name)
+ mc.invalidateFunc(newKey)
+ }
+ } else if message.OldEntry == nil && message.NewEntry != nil {
+ // no need to invaalidate
+ } else if message.OldEntry != nil && message.NewEntry == nil {
+ oldKey := util.NewFullPath(resp.Directory, message.OldEntry.Name)
+ mc.invalidateFunc(oldKey)
}
}