🐛 Index fixing should not be performed before data synchronization https://github.com/siyuan-note/siyuan/issues/10761

This commit is contained in:
Daniel 2024-03-27 09:48:06 +08:00
parent 2c1e8966e7
commit 0322e022f1
No known key found for this signature in database
GPG Key ID: 86211BA83DF03017
4 changed files with 19 additions and 4 deletions

View File

@ -48,7 +48,6 @@ func main() {
util.PushClearAllMsg() util.PushClearAllMsg()
job.StartCron() job.StartCron()
go model.CheckIndex()
go model.AutoGenerateDocHistory() go model.AutoGenerateDocHistory()
go cache.LoadAssets() go cache.LoadAssets()
go util.CheckFileSysStatus() go util.CheckFileSysStatus()

View File

@ -64,7 +64,6 @@ func StartKernel(container, appDir, workspaceBaseDir, timezoneID, localIPs, lang
util.PushClearAllMsg() util.PushClearAllMsg()
job.StartCron() job.StartCron()
go model.CheckIndex()
go model.AutoGenerateDocHistory() go model.AutoGenerateDocHistory()
go cache.LoadAssets() go cache.LoadAssets()
}() }()

View File

@ -24,6 +24,7 @@ import (
"runtime/debug" "runtime/debug"
"strings" "strings"
"sync" "sync"
"sync/atomic"
"time" "time"
"github.com/88250/gulu" "github.com/88250/gulu"
@ -40,8 +41,18 @@ import (
"github.com/siyuan-note/siyuan/kernel/util" "github.com/siyuan-note/siyuan/kernel/util"
) )
// CheckIndex 自动校验数据库索引 https://github.com/siyuan-note/siyuan/issues/7016 https://github.com/siyuan-note/siyuan/issues/10563 var (
func CheckIndex() { checkIndexPerformed = atomic.Bool{}
)
// checkIndex 自动校验数据库索引,仅在数据同步执行完成后执行一次。
func checkIndex() {
if checkIndexPerformed.Load() {
return
}
logging.LogInfof("start checking index...")
task.AppendTask(task.DatabaseIndexFix, removeDuplicateDatabaseIndex) task.AppendTask(task.DatabaseIndexFix, removeDuplicateDatabaseIndex)
sql.WaitForWritingDatabase() sql.WaitForWritingDatabase()
@ -61,6 +72,9 @@ func CheckIndex() {
util.PushStatusBar(Conf.Language(185)) util.PushStatusBar(Conf.Language(185))
}) })
debug.FreeOSMemory() debug.FreeOSMemory()
logging.LogInfof("finish checking index")
checkIndexPerformed.Store(true)
} }
var autoFixLock = sync.Mutex{} var autoFixLock = sync.Mutex{}

View File

@ -1330,6 +1330,9 @@ func syncRepo(exit, byHand bool) (dataChanged bool, err error) {
autoSyncErrCount = 0 autoSyncErrCount = 0
processSyncMergeResult(exit, byHand, mergeResult, trafficStat, "a", elapsed) processSyncMergeResult(exit, byHand, mergeResult, trafficStat, "a", elapsed)
// 首次数据同步执行完成后再执行索引订正 Index fixing should not be performed before data synchronization https://github.com/siyuan-note/siyuan/issues/10761
checkIndex()
return return
} }