🐛 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()
job.StartCron()
go model.CheckIndex()
go model.AutoGenerateDocHistory()
go cache.LoadAssets()
go util.CheckFileSysStatus()

View file

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

View file

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

View file

@ -1330,6 +1330,9 @@ func syncRepo(exit, byHand bool) (dataChanged bool, err error) {
autoSyncErrCount = 0
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
}