mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-10-22 00:58:51 +08:00
verbose but cleaner logic to invalidate fuse cache
This commit is contained in:
@@ -40,12 +40,21 @@ func SubscribeMetaEvents(mc *MetaCache, selfSignature int32, client filer_pb.Fil
|
|||||||
newEntry = filer.FromPbEntry(dir, message.NewEntry)
|
newEntry = filer.FromPbEntry(dir, message.NewEntry)
|
||||||
}
|
}
|
||||||
err := mc.AtomicUpdateEntryFromFiler(context.Background(), oldPath, newEntry)
|
err := mc.AtomicUpdateEntryFromFiler(context.Background(), oldPath, newEntry)
|
||||||
if err == nil && message.OldEntry != nil {
|
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)
|
oldKey := util.NewFullPath(resp.Directory, message.OldEntry.Name)
|
||||||
mc.invalidateFunc(oldKey)
|
mc.invalidateFunc(oldKey)
|
||||||
if message.NewEntry != nil {
|
|
||||||
key := util.NewFullPath(dir, message.NewEntry.Name)
|
|
||||||
mc.invalidateFunc(key)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user