Преглед на файлове

:art: Improve .sy data file writing transaction https://github.com/siyuan-note/siyuan/issues/11834

Daniel преди 1 година
родител
ревизия
abc3eb76c5
променени са 1 файла, в които са добавени 9 реда и са изтрити 4 реда
  1. 9 4
      kernel/model/transaction.go

+ 9 - 4
kernel/model/transaction.go

@@ -72,13 +72,14 @@ func WaitForWritingFiles() {
 }
 
 var (
-	txQueue   = make(chan *Transaction, 7)
-	flushLock = sync.Mutex{}
+	txQueue    = make(chan *Transaction, 7)
+	flushLock  = sync.Mutex{}
+	isFlushing = false
 )
 
 func isWritingFiles() bool {
 	time.Sleep(time.Duration(50) * time.Millisecond)
-	return 0 < len(txQueue)
+	return 0 < len(txQueue) || isFlushing
 }
 
 func init() {
@@ -95,7 +96,11 @@ func init() {
 func flushTx(tx *Transaction) {
 	defer logging.Recover()
 	flushLock.Lock()
-	defer flushLock.Unlock()
+	isFlushing = true
+	defer func() {
+		isFlushing = false
+		flushLock.Unlock()
+	}()
 
 	start := time.Now()
 	if txErr := performTx(tx); nil != txErr {