Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev' into dev

Vanessa před 1 rokem
rodič
revize
0dec8802bc

+ 2 - 1
app/appearance/langs/en_US.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "Execute database index embed block",
     "task.reload.ui": "Execute reload UI",
     "task.asset.database.index.full": "Execute asset database rebuild index",
-    "task.asset.database.index.commit": "Execute asset database index commit"
+    "task.asset.database.index.commit": "Execute asset database index commit",
+    "task.cache.virtualBlockRef": "Execute cache virtual reference"
   },
   "_trayMenu": {
     "showWindow": "Show Window",

+ 2 - 1
app/appearance/langs/es_ES.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "Ejecutar bloque de incrustación de índice de base de datos",
     "task.reload.ui": "IU de recarga de tareas",
     "task.asset.database.index.full": "Ejecutar índice de reconstrucción de base de datos de activos",
-    "task.asset.database.index.commit": "Ejecutar confirmación del índice de la base de datos de activos"
+    "task.asset.database.index.commit": "Ejecutar confirmación del índice de la base de datos de activos",
+    "task.cache.virtualBlockRef": "Ejecutar referencia virtual de caché"
   },
   "_trayMenu": {
     "showWindow": "Mostrar ventana",

+ 2 - 1
app/appearance/langs/fr_FR.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "Exécuter le bloc d'intégration d'index de base de données",
     "task.reload.ui": "Interface utilisateur de rechargement de tâche",
     "task.asset.database.index.full": "Exécuter l'index de reconstruction de la base de données d'actifs",
-    "task.asset.database.index.commit": "Exécuter la validation de l'index de la base de données des actifs"
+    "task.asset.database.index.commit": "Exécuter la validation de l'index de la base de données des actifs",
+    "task.cache.virtualBlockRef": "Effectuer une référence virtuelle du cache"
   },
   "_trayMenu": {
     "showWindow": "Afficher la fenêtre principale",

+ 2 - 1
app/appearance/langs/ja_JP.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "データベースのインデックスを埋め込みブロック中",
     "task.reload.ui": "UI の再読み込み中",
     "task.asset.database.index.full": "アセットデータベースのインデックスを再構築中",
-    "task.asset.database.index.commit": "アセットデータベースのインデックスをコミット中"
+    "task.asset.database.index.commit": "アセットデータベースのインデックスをコミット中",
+    "task.cache.virtualBlockRef": "キャッシュ仮想参照を実行"
   },
   "_trayMenu": {
     "showWindow": "ウィンドウを表示",

+ 2 - 1
app/appearance/langs/zh_CHT.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "執行資料庫索引嵌入塊",
     "task.reload.ui": "執行重載界面",
     "task.asset.database.index.full": "執行資源文件數據庫重建索引",
-    "task.asset.database.index.commit": "執行資源文件數據庫索引提交"
+    "task.asset.database.index.commit": "執行資源文件數據庫索引提交",
+    "task.cache.virtualBlockRef": "執行快取虛擬引用"
   },
   "_trayMenu": {
     "showWindow": "顯示主窗口",

+ 2 - 1
app/appearance/langs/zh_CN.json

@@ -1236,7 +1236,8 @@
     "task.database.index.embedBlock": "执行数据库索引嵌入块",
     "task.reload.ui": "执行重载界面",
     "task.asset.database.index.full": "执行资源文件数据库重建索引",
-    "task.asset.database.index.commit": "执行资源文件数据库索引提交"
+    "task.asset.database.index.commit": "执行资源文件数据库索引提交",
+    "task.cache.virtualBlockRef": "执行缓存虚拟引用"
   },
   "_trayMenu": {
     "showWindow": "显示主窗口",

+ 4 - 0
kernel/model/box.go

@@ -503,6 +503,10 @@ func genTreeID(tree *parse.Tree) {
 func FullReindex() {
 	task.AppendTask(task.DatabaseIndexFull, fullReindex)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
+	go func() {
+		sql.WaitForWritingDatabase()
+		ResetVirtualBlockRefCache()
+	}()
 	task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock)
 	cache.ClearDocsIAL()
 	cache.ClearBlocksIAL()

+ 8 - 2
kernel/model/index.go

@@ -106,6 +106,10 @@ func listSyFiles(dir string) (ret []string) {
 
 func (box *Box) Unindex() {
 	task.AppendTask(task.DatabaseIndex, unindex, box.ID)
+	go func() {
+		sql.WaitForWritingDatabase()
+		ResetVirtualBlockRefCache()
+	}()
 }
 
 func unindex(boxID string) {
@@ -118,6 +122,10 @@ func (box *Box) Index() {
 	task.AppendTask(task.DatabaseIndexRef, removeBoxRefs, box.ID)
 	task.AppendTask(task.DatabaseIndex, index, box.ID)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
+	go func() {
+		sql.WaitForWritingDatabase()
+		ResetVirtualBlockRefCache()
+	}()
 }
 
 func removeBoxRefs(boxID string) {
@@ -281,8 +289,6 @@ func IndexRefs() {
 	}
 	logging.LogInfof("resolved refs [%d] in [%dms]", size, time.Now().Sub(start).Milliseconds())
 	util.PushStatusBar(fmt.Sprintf(Conf.Language(55), i))
-
-	ResetVirtualBlockRefCache()
 }
 
 var indexEmbedBlockLock = sync.Mutex{}

+ 5 - 0
kernel/model/repository.go

@@ -51,6 +51,7 @@ import (
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
+	"github.com/siyuan-note/siyuan/kernel/sql"
 	"github.com/siyuan-note/siyuan/kernel/task"
 	"github.com/siyuan-note/siyuan/kernel/treenode"
 	"github.com/siyuan-note/siyuan/kernel/util"
@@ -649,6 +650,10 @@ func checkoutRepo(id string) {
 
 	task.AppendTask(task.DatabaseIndexFull, fullReindex)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
+	go func() {
+		sql.WaitForWritingDatabase()
+		ResetVirtualBlockRefCache()
+	}()
 	task.AppendTask(task.ReloadUI, util.ReloadUIResetScroll)
 
 	if syncEnabled {

+ 8 - 5
kernel/model/virutalref.go

@@ -31,6 +31,7 @@ import (
 	"github.com/dgraph-io/ristretto"
 	"github.com/siyuan-note/siyuan/kernel/search"
 	"github.com/siyuan-note/siyuan/kernel/sql"
+	"github.com/siyuan-note/siyuan/kernel/task"
 	"github.com/siyuan-note/siyuan/kernel/treenode"
 )
 
@@ -99,18 +100,20 @@ func putBlockVirtualRefKeywords(blockContent string, root *ast.Node) (ret []stri
 }
 
 func CacheVirtualBlockRefJob() {
-	virtualBlockRefCache.Del("virtual_ref")
 	if !Conf.Editor.VirtualBlockRef {
 		return
 	}
-
-	keywords := sql.QueryVirtualRefKeywords(Conf.Search.VirtualRefName, Conf.Search.VirtualRefAlias, Conf.Search.VirtualRefAnchor, Conf.Search.VirtualRefDoc)
-	virtualBlockRefCache.Set("virtual_ref", keywords, 1)
+	task.AppendTask(task.CacheVirtualBlockRef, ResetVirtualBlockRefCache)
 }
 
 func ResetVirtualBlockRefCache() {
 	virtualBlockRefCache.Clear()
-	CacheVirtualBlockRefJob()
+	if !Conf.Editor.VirtualBlockRef {
+		return
+	}
+
+	keywords := sql.QueryVirtualRefKeywords(Conf.Search.VirtualRefName, Conf.Search.VirtualRefAlias, Conf.Search.VirtualRefAnchor, Conf.Search.VirtualRefDoc)
+	virtualBlockRefCache.Set("virtual_ref", keywords, 1)
 }
 
 func AddVirtualBlockRefInclude(keyword []string) {

+ 1 - 0
kernel/task/queue.go

@@ -99,6 +99,7 @@ const (
 	ReloadUI                        = "task.reload.ui"                     // 重载 UI
 	AssetContentDatabaseIndexFull   = "task.asset.database.index.full"     // 资源文件数据库重建索引
 	AssetContentDatabaseIndexCommit = "task.asset.database.index.commit"   // 资源文件数据库索引提交
+	CacheVirtualBlockRef            = "task.cache.virtualBlockRef"         // 缓存虚拟块引用
 )
 
 // uniqueActions 描述了唯一的任务,即队列中只能存在一个在执行的任务。