From 1fec9323de7b89ad745bf6bf256b6ac985fd2d52 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 25 Jan 2023 11:32:09 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6=E6=9C=BA=E5=88=B6=E6=8F=90?= =?UTF-8?q?=E5=8D=87=E7=A8=B3=E5=AE=9A=E6=80=A7=20https://github.com/siyua?= =?UTF-8?q?n-note/siyuan/issues/7113?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/sql/queue.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/kernel/sql/queue.go b/kernel/sql/queue.go index 0d35c54b9..e094c3bf0 100644 --- a/kernel/sql/queue.go +++ b/kernel/sql/queue.go @@ -103,7 +103,8 @@ func FlushQueue() { } context := map[string]interface{}{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBar} - for _, op := range ops { + execOps := 0 + for i, op := range ops { if util.IsExiting { break } @@ -131,16 +132,36 @@ func FlushQueue() { err = upsertRefs(tx, op.upsertTree) default: logging.LogErrorf("unknown operation [%s]", op.action) + break } + op.renameTree = nil + op.upsertTree = nil + + execOps++ if nil != err { logging.LogErrorf("queue operation failed: %s", err) break } + + if 0 < i && 0 == i%64 { + if err = commitTx(tx); nil != err { + logging.LogErrorf("commit tx failed: %s", err) + break + } + + execOps = 0 + tx, err = beginTx() + if nil != err { + break + } + } } - if err = commitTx(tx); nil != err { - logging.LogErrorf("commit tx failed: %s", err) + if 0 < execOps { + if err = commitTx(tx); nil != err { + logging.LogErrorf("commit tx failed: %s", err) + } } elapsed := time.Now().Sub(start).Milliseconds() if 5000 < elapsed {