From f49127edf560a6aa50312e475edfeef046390f5e Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 14 Jun 2022 23:29:06 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=95=B0=E6=8D=AE=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E5=9B=9E=E6=BB=9A=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/5160?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/go.mod | 2 +- kernel/go.sum | 4 ++-- kernel/model/backup.go | 17 ++++++++++------- kernel/model/repository.go | 6 +++++- kernel/sql/database.go | 1 + 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/kernel/go.mod b/kernel/go.mod index 68a12c021..187669ec1 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -40,7 +40,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/qiniu/go-sdk/v7 v7.13.0 github.com/radovskyb/watcher v1.0.7 - github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b + github.com/siyuan-note/dejavu v0.0.0-20220614142403-d44683c970fc github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 github.com/vmihailenco/msgpack/v5 v5.3.5 github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 diff --git a/kernel/go.sum b/kernel/go.sum index 2189b41d4..c502d99fa 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -419,8 +419,8 @@ github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b h1:GyLlhQQsgfVFzyWB+OB1wCRlyzBhI4EkczC0YK9cRHc= -github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b/go.mod h1:Oa/Y6fvTUCg8h9/t6GNWXiu8T7aQri/ZvyDRygnlikI= +github.com/siyuan-note/dejavu v0.0.0-20220614142403-d44683c970fc h1:GRcKYDhL9R3dU1ZemgQdRCDcVV9msadMzDDMD72+C+g= +github.com/siyuan-note/dejavu v0.0.0-20220614142403-d44683c970fc/go.mod h1:Oa/Y6fvTUCg8h9/t6GNWXiu8T7aQri/ZvyDRygnlikI= github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 h1:QB9TjJQFhXhZ6dAtPpY02DlzHAQm1C+WqZq6OadG8mI= github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= diff --git a/kernel/model/backup.go b/kernel/model/backup.go index ddf95bd3c..2daa7be13 100644 --- a/kernel/model/backup.go +++ b/kernel/model/backup.go @@ -34,6 +34,7 @@ import ( "github.com/dustin/go-humanize" "github.com/siyuan-note/encryption" "github.com/siyuan-note/siyuan/kernel/filesys" + "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -141,9 +142,11 @@ func RecoverLocalBackup() (err error) { return errors.New(Conf.Language(11)) } - data := util.AESDecrypt(Conf.E2EEPasswd) - data, _ = hex.DecodeString(string(data)) - passwd := string(data) + writingDataLock.Lock() + defer writingDataLock.Unlock() + + filesys.ReleaseAllFileLocks() + sql.WaitForWritingDatabase() CloseWatchAssets() defer WatchAssets() @@ -153,17 +156,17 @@ func RecoverLocalBackup() (err error) { Conf.Sync.Enabled = false Conf.Save() - filesys.ReleaseAllFileLocks() - util.PushEndlessProgress(Conf.Language(63)) util.LogInfof("starting recovery...") start := time.Now() - + data := util.AESDecrypt(Conf.E2EEPasswd) + data, _ = hex.DecodeString(string(data)) + passwd := string(data) decryptedDataDir, err := decryptDataDir(passwd) if nil != err { + util.ClearPushProgress(100) return } - newDataDir := filepath.Join(util.WorkspaceDir, "data.new") os.RemoveAll(newDataDir) if err = os.MkdirAll(newDataDir, 0755); nil != err { diff --git a/kernel/model/repository.go b/kernel/model/repository.go index ce6207d73..3002485f2 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -28,6 +28,7 @@ import ( "github.com/siyuan-note/dejavu/entity" "github.com/siyuan-note/encryption" "github.com/siyuan-note/siyuan/kernel/filesys" + "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -131,10 +132,13 @@ func CheckoutRepo(id string) (err error) { return } - filesys.ReleaseAllFileLocks() + util.PushEndlessProgress(Conf.Language(63)) writingDataLock.Lock() defer writingDataLock.Unlock() + filesys.ReleaseAllFileLocks() + sql.WaitForWritingDatabase() + CloseWatchAssets() defer WatchAssets() diff --git a/kernel/sql/database.go b/kernel/sql/database.go index a7b541847..92ad086a3 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -70,6 +70,7 @@ func InitDatabase(forceRebuild bool) (err error) { if gulu.File.IsExist(util.DBPath) { if err = removeDatabaseFile(); nil != err { util.LogErrorf("remove database file [%s] failed: %s", util.DBPath, err) + util.PushClearProgress() return } }