diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index f30a69786..066d71864 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1258,7 +1258,7 @@ func autoFixIndex() { redundantPaths := treenode.GetRedundantPaths(box.ID, paths) for _, p := range redundantPaths { - treenode.RemoveBlockTreesByPathPrefix(p) + treenode.RemoveBlockTreesByPath(p) } missingPaths := treenode.GetNotExistPaths(box.ID, paths) diff --git a/kernel/treenode/blocktree.go b/kernel/treenode/blocktree.go index c1afce2ac..508f34d22 100644 --- a/kernel/treenode/blocktree.go +++ b/kernel/treenode/blocktree.go @@ -224,6 +224,23 @@ func RemoveBlockTreesByRootID(rootID string) { blockTreesChanged = true } +func RemoveBlockTreesByPath(path string) { + blockTreesLock.Lock() + defer blockTreesLock.Unlock() + + var ids []string + for _, b := range blockTrees { + if b.Path == path { + ids = append(ids, b.ID) + } + } + ids = gulu.Str.RemoveDuplicatedElem(ids) + for _, id := range ids { + delete(blockTrees, id) + } + blockTreesChanged = true +} + func RemoveBlockTreesByPathPrefix(pathPrefix string) { blockTreesLock.Lock() defer blockTreesLock.Unlock()