Browse Source

:art: Improve rollback doc file history https://github.com/siyuan-note/siyuan/issues/11575

Daniel 1 year ago
parent
commit
69d0f20501
2 changed files with 12 additions and 2 deletions
  1. 5 0
      kernel/model/history.go
  2. 7 2
      kernel/sql/queue.go

+ 5 - 0
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
 }
 

+ 7 - 2
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()