Ver código fonte

:art: 数据同步增量索引

Liang Ding 3 anos atrás
pai
commit
35b21f03b8
3 arquivos alterados com 21 adições e 8 exclusões
  1. 17 7
      kernel/model/repository.go
  2. 3 1
      kernel/model/sync.go
  3. 1 0
      kernel/util/working.go

+ 17 - 7
kernel/model/repository.go

@@ -37,6 +37,7 @@ import (
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/sql"
+	"github.com/siyuan-note/siyuan/kernel/treenode"
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 
@@ -520,16 +521,25 @@ func syncRepo(boot, exit, byHand bool) {
 	for _, file := range mergeResult.Removes {
 		removes = append(removes, file.Path)
 	}
+
+	if boot && gulu.File.IsExist(util.BlockTreePath) {
+		treenode.InitBlockTree()
+	}
+
 	incReindex(upserts, removes)
-	cache.ClearDocsIAL()
+	cache.ClearDocsIAL() // 同步后文档树文档图标没有更新 https://github.com/siyuan-note/siyuan/issues/4939
+
+	if !boot && !exit {
+		util.ReloadUI()
+	}
 
-	// 刷新界面
-	util.ReloadUI()
 	elapsed = time.Since(start)
-	go func() {
-		time.Sleep(2 * time.Second)
-		util.PushStatusBar(fmt.Sprintf(Conf.Language(149), elapsed.Seconds()))
-	}()
+	if !exit {
+		go func() {
+			time.Sleep(2 * time.Second)
+			util.PushStatusBar(fmt.Sprintf(Conf.Language(149), elapsed.Seconds()))
+		}()
+	}
 	return
 }
 

+ 3 - 1
kernel/model/sync.go

@@ -123,6 +123,7 @@ func SyncData(boot, exit, byHand bool) {
 
 // incReindex 增量重建索引。
 func incReindex(upserts, removes []string) {
+	util.IncBootProgress(3, "Sync reindexing...")
 	needPushRemoveProgress := 32 < len(removes)
 	needPushUpsertProgress := 32 < len(upserts)
 	msg := fmt.Sprintf(Conf.Language(35))
@@ -141,6 +142,7 @@ func incReindex(upserts, removes []string) {
 		id := strings.TrimSuffix(filepath.Base(removeFile), ".sy")
 		block := treenode.GetBlockTree(id)
 		if nil != block {
+			util.SetBootDetails("Sync remove tree " + block.Path)
 			treenode.RemoveBlockTreesByRootID(block.RootID)
 			sql.RemoveTreeQueue(block.BoxID, block.RootID)
 			msg = fmt.Sprintf(Conf.Language(39), block.RootID)
@@ -156,7 +158,6 @@ func incReindex(upserts, removes []string) {
 	if needPushRemoveProgress || needPushUpsertProgress {
 		util.PushEndlessProgress(msg)
 	}
-	sql.WaitForWritingDatabase()
 
 	for _, upsertFile := range upserts {
 		if !strings.HasSuffix(upsertFile, ".sy") {
@@ -175,6 +176,7 @@ func incReindex(upserts, removes []string) {
 
 		box := upsertFile[:idx]
 		p := strings.TrimPrefix(upsertFile, box)
+		util.SetBootDetails("Sync upsert tree " + p)
 		tree, err0 := LoadTree(box, p)
 		if nil != err0 {
 			continue

+ 1 - 0
kernel/util/working.go

@@ -302,6 +302,7 @@ func initPathDir() {
 	}
 }
 
+// TODO: v2.2.0 移除
 func cleanOld() {
 	dirs, _ := os.ReadDir(WorkingDir)
 	for _, dir := range dirs {