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

This commit is contained in:
Vanessa 2023-02-09 17:38:39 +08:00
commit 8cd3ac9a13
14 changed files with 63 additions and 59 deletions

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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": "執行數據庫索引嵌入塊",

View file

@ -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": "执行数据库索引嵌入块",

8
kernel/cache/ial.go vendored
View file

@ -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,
})

View file

@ -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)

View file

@ -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
}

View file

@ -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))

View file

@ -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
}
uiProcessCount++
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)
}
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
})
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++
}
}
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)
}
}
return
}
// 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 uiProcOk {
ret++
}
}
return
}

View file

@ -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
}

View file

@ -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...")

View file

@ -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

View file

@ -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" // 数据库索引嵌入块