From cff223bc2d942186c16ec0c0fcdf819cdf13f0a2 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 27 Jan 2023 16:59:39 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E6=94=B9=E8=BF=9B=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=80=A7=E8=83=BD=20Fix=20https://github.com?= =?UTF-8?q?/siyuan-note/siyuan/issues/7175?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/transaction.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 923309aac..a97f0e629 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -64,8 +64,6 @@ func IsUnfoldHeading(transactions *[]*Transaction) bool { var ( txQueue []*Transaction txQueueLock = sync.Mutex{} - - currentTx *Transaction ) func WaitForWritingFiles() { @@ -86,20 +84,21 @@ func WaitForWritingFiles() { func isWritingFiles() bool { time.Sleep(time.Duration(20) * time.Millisecond) - if 0 < len(txQueue) || util.IsMutexLocked(&txQueueLock) { - return true - } - return nil != currentTx + return 0 < len(txQueue) || util.IsMutexLocked(&txQueueLock) || util.IsMutexLocked(&flushLock) } func FlushTxJob() { flushTx() } +var flushLock = sync.Mutex{} + func flushTx() { defer logging.Recover() + flushLock.Lock() + defer flushLock.Unlock() - currentTx = mergeTx() + currentTx := mergeTx() start := time.Now() if txErr := performTx(currentTx); nil != txErr { switch txErr.code { @@ -119,7 +118,6 @@ func flushTx() { logging.LogWarnf("op tx [%dms]", elapsed) } } - currentTx = nil } func mergeTx() (ret *Transaction) {