From 0f915df2368d37ec7c8038dd68d3cc4fd290c600 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 11 May 2024 11:11:15 +0800 Subject: [PATCH] :bug: Block attributes are not refreshed after data syncing https://github.com/siyuan-note/siyuan/issues/11343 --- kernel/cache/ial.go | 4 ++++ kernel/model/box.go | 3 +++ kernel/model/repository.go | 2 -- kernel/model/sync.go | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/kernel/cache/ial.go b/kernel/cache/ial.go index 94cc23bfe..92de587fb 100644 --- a/kernel/cache/ial.go +++ b/kernel/cache/ial.go @@ -75,3 +75,7 @@ func GetBlockIAL(id string) (ret map[string]string) { func RemoveBlockIAL(id string) { blockIALCache.Del(id) } + +func ClearBlocksIAL() { + blockIALCache.Clear() +} diff --git a/kernel/model/box.go b/kernel/model/box.go index 3b5dec2db..cb958c483 100644 --- a/kernel/model/box.go +++ b/kernel/model/box.go @@ -36,6 +36,7 @@ import ( "github.com/facette/natsort" "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" + "github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/sql" @@ -503,6 +504,8 @@ func FullReindex() { task.AppendTask(task.DatabaseIndexFull, fullReindex) task.AppendTask(task.DatabaseIndexRef, IndexRefs) task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock) + cache.ClearDocsIAL() + cache.ClearBlocksIAL() task.AppendTask(task.ReloadUI, util.ReloadUI) } diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 0c0947856..17c90399d 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -49,7 +49,6 @@ import ( "github.com/siyuan-note/eventbus" "github.com/siyuan-note/httpclient" "github.com/siyuan-note/logging" - "github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/task" @@ -1475,7 +1474,6 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, syncingFiles = sync.Map{} syncingStorages.Store(false) - cache.ClearDocsIAL() // 同步后文档树文档图标没有更新 https://github.com/siyuan-note/siyuan/issues/4939 if needFullReindex(upsertTrees) { // 改进同步后全量重建索引判断 https://github.com/siyuan-note/siyuan/issues/5764 FullReindex() return diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 5c1d7c0fd..9292e8806 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -36,6 +36,7 @@ import ( "github.com/siyuan-note/dejavu" "github.com/siyuan-note/dejavu/cloud" "github.com/siyuan-note/logging" + "github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/sql" @@ -306,6 +307,12 @@ func removeIndexes(removeFilePaths []string) (removeRootIDs []string) { util.IncBootProgress(bootProgressPart, msg) util.PushStatusBar(msg) + bts := treenode.GetBlockTreesByRootID(block.RootID) + for _, b := range bts { + cache.RemoveBlockIAL(b.ID) + } + cache.RemoveDocIAL(block.Path) + treenode.RemoveBlockTreesByRootID(block.RootID) sql.RemoveTreeQueue(block.RootID) } @@ -347,6 +354,13 @@ func upsertIndexes(upsertFilePaths []string) (upsertRootIDs []string) { } treenode.IndexBlockTree(tree) sql.UpsertTreeQueue(tree) + + bts := treenode.GetBlockTreesByRootID(tree.ID) + for _, b := range bts { + cache.RemoveBlockIAL(b.ID) + } + cache.RemoveDocIAL(tree.Path) + upsertRootIDs = append(upsertRootIDs, tree.Root.ID) }