Selaa lähdekoodia

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

Vanessa 2 vuotta sitten
vanhempi
commit
8cd3ac9a13

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

@@ -882,7 +882,6 @@
     "task.database.index.commit": "Execute database index commit",
     "task.database.index.ref": "Execute database index reference",
     "task.database.index.fix": "Execute database index fix",
-    "task.database.cache": "Execute database cache",
     "task.ocr.image": "Execute image OCR to extract text",
     "task.history.generateDoc": "Execute GenerateDoc History",
     "task.database.index.embedBlock": "Execute database index embed block",

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

@@ -882,7 +882,6 @@
     "task.database.index.commit": "Ejecutar la confirmación del índice de la base de datos",
     "task.database.index.ref": "Ejecutar referencia de índice de base de datos",
     "task.database.index.fix": "Ejecutar corrección del índice de la base de datos",
-    "task.database.cache": "Ejecutar caché de base de datos",
     "task.ocr.image": "Ejecutar OCR de imagen para extraer texto",
     "task.history.generateDoc": "Ejecutar Historial GenerateDoc",
     "task.database.index.embedBlock": "Ejecutar bloque de incrustación de índice de base de datos",

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

@@ -882,7 +882,6 @@
     "task.database.index.commit": "Effectuer la validation de l'index de la base de données",
     "task.database.index.ref": "Exécuter la référence d'index de la base de données",
     "task.database.index.fix": "Effectuer la correction de l'index de la base de données",
-    "task.database.cache": "Effectuer le cache de la base de données",
     "task.ocr.image": "Exécute l'OCR d'image pour extraire le texte",
     "task.history.generateDoc": "Exécuter l'historique de GenerateDoc",
     "task.database.index.embedBlock": "Exécuter le bloc d'intégration d'index de base de données",

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

@@ -882,7 +882,6 @@
     "task.database.index.commit": "執行數據庫索引提交",
     "task.database.index.ref": "執行數據庫索引引用",
     "task.database.index.fix": "執行數據庫索引訂正",
-    "task.database.cache": "執行數據庫緩存",
     "task.ocr.image": "執行圖片 OCR 提取文本",
     "task.history.generateDoc": "執行生成文件歷史",
     "task.database.index.embedBlock": "執行數據庫索引嵌入塊",

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

@@ -882,7 +882,6 @@
     "task.database.index.commit": "执行数据库索引提交",
     "task.database.index.ref": "执行数据库索引引用",
     "task.database.index.fix": "执行数据库索引订正",
-    "task.database.cache": "执行数据库缓存",
     "task.ocr.image": "执行图片 OCR 提取文本",
     "task.history.generateDoc": "执行生成文件历史",
     "task.database.index.embedBlock": "执行数据库索引嵌入块",

+ 4 - 4
kernel/cache/ial.go

@@ -24,8 +24,8 @@ import (
 )
 
 var docIALCache, _ = ristretto.NewCache(&ristretto.Config{
-	NumCounters: 200000,
-	MaxCost:     1000 * 1000 * 32,
+	NumCounters: 10240,
+	MaxCost:     1024,
 	BufferItems: 64,
 })
 
@@ -55,8 +55,8 @@ func ClearDocsIAL() {
 }
 
 var blockIALCache, _ = ristretto.NewCache(&ristretto.Config{
-	NumCounters: 800000,
-	MaxCost:     1000 * 1000 * 64,
+	NumCounters: 10240,
+	MaxCost:     1024,
 	BufferItems: 64,
 })
 

+ 0 - 2
kernel/model/box.go

@@ -506,7 +506,6 @@ func ReloadUI() {
 
 func FullReindex() {
 	task.AppendTask(task.DatabaseIndexFull, fullReindex)
-	task.AppendTask(task.DatabaseCache, sql.EnableCache)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
 	task.AppendTask(task.ReloadUI, util.ReloadUI)
 }
@@ -521,7 +520,6 @@ func fullReindex() {
 	}
 	treenode.InitBlockTree(true)
 
-	sql.DisableCache()
 	openedBoxes := Conf.GetOpenedBoxes()
 	for _, openedBox := range openedBoxes {
 		index(openedBox.ID)

+ 2 - 1
kernel/model/history.go

@@ -242,6 +242,7 @@ func RollbackDocHistory(boxID, historyPath string) (err error) {
 		return
 	}
 
+	util.ReloadUI()
 	FullReindex()
 	IncSync()
 	return nil
@@ -297,9 +298,9 @@ func RollbackNotebookHistory(historyPath string) (err error) {
 		return
 	}
 
+	util.ReloadUI()
 	FullReindex()
 	IncSync()
-	ReloadUI()
 	return nil
 }
 

+ 0 - 3
kernel/model/index.go

@@ -131,9 +131,6 @@ func index(boxID string) {
 }
 
 func IndexRefs() {
-	sql.EnableCache()
-	defer sql.ClearBlockCache()
-
 	start := time.Now()
 	util.SetBootDetails("Resolving refs...")
 	util.PushStatusBar(Conf.Language(54))

+ 42 - 33
kernel/model/process.go

@@ -39,7 +39,6 @@ func HandleSignal() {
 
 var (
 	firstRunHookDesktopUIProcJob = true
-	noUIProcCount                int
 )
 
 func HookDesktopUIProcJob() {
@@ -59,12 +58,34 @@ func HookDesktopUIProcJob() {
 		return
 	}
 
-	uiProcNames := []string{"siyuan", "electron"}
-	uiProcessCount := 0
-	util.UIProcessIDs.Range(func(uiProcIDArg, _ interface{}) bool {
-		// 从 UI 进程 ID 列表中找到 UI 进程
+	uiProcCount := getAttachedUIProcCount()
+	if 0 < uiProcCount {
+		return
+	}
+
+	logging.LogWarnf("no active UI proc, continue to check from attached ui processes after 15s")
+	time.Sleep(15 * time.Second)
+	uiProcCount = getAttachedUIProcCount()
+	if 0 < uiProcCount {
+		return
+	}
+	logging.LogWarnf("no active UI proc, continue to check from all processes after 15s")
+	time.Sleep(15 * time.Second)
+	uiProcCount = getUIProcCount()
+	if 0 < uiProcCount {
+		logging.LogInfof("active UI proc count [%d]", uiProcCount)
+		return
+	}
+
+	logging.LogWarnf("confirmed no active UI proc, exit kernel process now")
+	Close(false, 1)
+}
 
-		uiProcessCount++
+var uiProcNames = []string{"siyuan", "electron"}
+
+// getAttachedUIProcCount 获取已经附加的 UI 进程数。
+func getAttachedUIProcCount() (ret int) {
+	util.UIProcessIDs.Range(func(uiProcIDArg, _ interface{}) bool {
 		uiProcID, err := strconv.Atoi(uiProcIDArg.(string))
 		if nil != err {
 			logging.LogErrorf("invalid UI proc ID [%s]: %s", uiProcIDArg, err)
@@ -78,7 +99,6 @@ func HookDesktopUIProcJob() {
 		}
 
 		if nil == proc {
-			noUIProcCount++
 			return true
 		}
 
@@ -87,37 +107,26 @@ func HookDesktopUIProcJob() {
 		for _, name := range uiProcNames {
 			uiProcOk = strings.Contains(procName, name)
 		}
-		if !uiProcOk {
-			noUIProcCount++
+		if uiProcOk {
+			ret++
 		}
 		return true
 	})
+	return
+}
 
-	if 1 > uiProcessCount {
-		// 如果 UI 进程 ID 列表中没有找到 UI 进程则从完整的进程列表中找
-		procs, _ := goPS.Processes()
-		for _, proc := range procs {
-			procName := strings.ToLower(proc.Executable())
-			uiProcOk := false
-			for _, name := range uiProcNames {
-				uiProcOk = strings.Contains(procName, name)
-			}
-			if uiProcOk {
-				uiProcessCount++
-				break
-			}
-		}
-
-		if 1 > uiProcessCount {
-			noUIProcCount++
+// getUIProcCount 获取 UI 进程数。
+func getUIProcCount() (ret int) {
+	procs, _ := goPS.Processes()
+	for _, proc := range procs {
+		procName := strings.ToLower(proc.Executable())
+		uiProcOk := false
+		for _, name := range uiProcNames {
+			uiProcOk = strings.Contains(procName, name)
 		}
-	}
-
-	if 0 < noUIProcCount {
-		logging.LogInfof("no active UI proc count [%d]", noUIProcCount)
-		if 1 < noUIProcCount {
-			logging.LogInfof("confirmed no active UI proc, exit kernel process now")
-			Close(false, 1)
+		if uiProcOk {
+			ret++
 		}
 	}
+	return
 }

+ 4 - 4
kernel/sql/cache.go

@@ -29,17 +29,17 @@ import (
 )
 
 var memCache, _ = ristretto.NewCache(&ristretto.Config{
-	NumCounters: 800000,
-	MaxCost:     1000 * 1000 * 100,
+	NumCounters: 10240,
+	MaxCost:     1024,
 	BufferItems: 64,
 })
 var disabled = true
 
-func EnableCache() {
+func enableCache() {
 	disabled = false
 }
 
-func DisableCache() {
+func disableCache() {
 	disabled = true
 }
 

+ 2 - 2
kernel/sql/database.go

@@ -68,8 +68,8 @@ func InitDatabase(forceRebuild bool) (err error) {
 	defer initDatabaseLock.Unlock()
 
 	ClearBlockCache()
-	DisableCache()
-	defer EnableCache()
+	disableCache()
+	defer enableCache()
 
 	util.IncBootProgress(2, "Initializing database...")
 

+ 5 - 0
kernel/sql/queue.go

@@ -105,6 +105,11 @@ func FlushQueue() {
 
 	context := map[string]interface{}{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBar}
 	total := len(ops)
+	if 512 < total {
+		disableCache()
+		defer enableCache()
+	}
+
 	for i, op := range ops {
 		if util.IsExiting {
 			return

+ 0 - 1
kernel/task/queue.go

@@ -86,7 +86,6 @@ const (
 	DatabaseIndexCommit     = "task.database.index.commit"     // 数据库索引提交
 	DatabaseIndexRef        = "task.database.index.ref"        // 数据库索引引用
 	DatabaseIndexFix        = "task.database.index.fix"        // 数据库索引订正
-	DatabaseCache           = "task.database.cache"            // 数据库缓存
 	OCRImage                = "task.ocr.image"                 // 图片 OCR 提取文本
 	HistoryGenerateDoc      = "task.history.generateDoc"       // 生成文件历史
 	DatabaseIndexEmbedBlock = "task.database.index.embedBlock" // 数据库索引嵌入块