From 8e259c100a96463553fd3ccd8777c0ada5000595 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 22 Nov 2022 21:11:44 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=20BlockTree=20?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/conf.go | 1 + kernel/treenode/blocktree.go | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index f13377644..38ac242c0 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -429,6 +429,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) { Conf.Close() sql.CloseDatabase() + treenode.SaveBlockTree() clearWorkspaceTemp() clearPortJSON() diff --git a/kernel/treenode/blocktree.go b/kernel/treenode/blocktree.go index 0b856fbd4..d0a9d1f89 100644 --- a/kernel/treenode/blocktree.go +++ b/kernel/treenode/blocktree.go @@ -254,10 +254,7 @@ func IndexBlockTree(tree *parse.Tree) { func AutoFlushBlockTree() { for { - if blockTreesChanged { - SaveBlockTree() - blockTreesChanged = false - } + SaveBlockTree() time.Sleep(7 * time.Second) } } @@ -306,6 +303,10 @@ func InitBlockTree(force bool) { } func SaveBlockTree() { + if !blockTreesChanged { + return + } + start := time.Now() blockTreesLock.Lock() @@ -326,4 +327,6 @@ func SaveBlockTree() { if elapsed := time.Since(start).Seconds(); 2 < elapsed { logging.LogWarnf("save block tree [size=%s] to [%s], elapsed [%.2fs]", humanize.Bytes(uint64(len(data))), util.BlockTreePath, elapsed) } + + blockTreesChanged = false }