From 10407d54d6d3031edfbfcb56593ea8c8166dde0f Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 26 Jan 2023 11:56:06 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=202.7.1dev3=20=E9=87=8D=E5=BB=BA=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E6=97=B6=E6=8A=A5=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A2=AB?= =?UTF-8?q?=E9=94=81=E5=AE=9A=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/7167?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/server/serve.go | 5 +---- kernel/sql/database.go | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/kernel/server/serve.go b/kernel/server/serve.go index 8b67e1e63..e078ce051 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -63,10 +63,7 @@ func Serve(fastMode bool) { }) ginServer.Use(sessions.Sessions("siyuan", cookieStore)) - if "dev" == util.Mode { - serveDebug(ginServer) - } - + serveDebug(ginServer) serveAssets(ginServer) serveAppearance(ginServer) serveWebSocket(ginServer) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index bef9bd5ee..144b9fb14 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -23,6 +23,7 @@ import ( "os" "path/filepath" "regexp" + "runtime" "strings" "time" "unicode/utf8" @@ -65,7 +66,6 @@ func InitDatabase(forceRebuild bool) (err error) { if forceRebuild { ClearQueue() - WaitForWritingDatabase() } initDBConnection() @@ -80,12 +80,12 @@ func InitDatabase(forceRebuild bool) (err error) { // 不存在库或者版本不一致都会走到这里 - db.Close() + closeDatabase() if gulu.File.IsExist(util.DBPath) { if err = removeDatabaseFile(); nil != err { logging.LogErrorf("remove database file [%s] failed: %s", util.DBPath, err) util.PushClearProgress() - return + err = nil } } if gulu.File.IsExist(util.BlockTreePath) { @@ -209,7 +209,7 @@ func initHistoryDBTables() { func initDBConnection() { if nil != db { - db.Close() + closeDatabase() } dsn := util.DBPath + "?_journal_mode=WAL" + "&_synchronous=OFF" + @@ -1023,7 +1023,7 @@ func batchUpdateHPath(tx *sql.Tx, boxID, rootID, oldHPath, newHPath string) (err } func CloseDatabase() { - if err := db.Close(); nil != err { + if err := closeDatabase(); nil != err { logging.LogErrorf("close database failed: %s", err) return } @@ -1111,7 +1111,7 @@ func execStmtTx(tx *sql.Tx, stmt string, args ...interface{}) (err error) { if _, err = tx.Exec(stmt, args...); nil != err { if strings.Contains(err.Error(), "database disk image is malformed") { tx.Rollback() - db.Close() + closeDatabase() removeDatabaseFile() logging.LogFatalf("database disk image [%s] is malformed, please restart SiYuan kernel to rebuild it", util.DBPath) } @@ -1180,3 +1180,13 @@ func removeDatabaseFile() (err error) { } return } + +func closeDatabase() (err error) { + if nil == db { + return + } + + err = db.Close() + runtime.GC() // 没有这句的话文件句柄不会释放,后面就无法删除文件 + return +}