diff --git a/kernel/model/history.go b/kernel/model/history.go index 21d012905..9e2af2ada 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -271,6 +271,11 @@ func RollbackDocHistory(boxID, historyPath string) (err error) { FullReindex() IncSync() + go func() { + sql.WaitForWritingDatabase() + // 刷新关联的动态锚文本 https://github.com/siyuan-note/siyuan/issues/11575 + refreshDynamicRefText(tree.Root, tree) + }() return nil } diff --git a/kernel/sql/queue.go b/kernel/sql/queue.go index cb3f82ff6..cb83e2d5c 100644 --- a/kernel/sql/queue.go +++ b/kernel/sql/queue.go @@ -36,6 +36,7 @@ var ( operationQueue []*dbQueueOperation dbQueueLock = sync.Mutex{} txLock = sync.Mutex{} + isWriting = false ) type dbQueueOperation struct { @@ -77,7 +78,7 @@ func isWritingDatabase() bool { time.Sleep(util.SQLFlushInterval + 50*time.Millisecond) dbQueueLock.Lock() defer dbQueueLock.Unlock() - if 0 < len(operationQueue) { + if 0 < len(operationQueue) || isWriting { return true } return false @@ -103,7 +104,11 @@ func FlushQueue() { } txLock.Lock() - defer txLock.Unlock() + isWriting = true + defer func() { + isWriting = false + txLock.Unlock() + }() start := time.Now()