fix db WAL memory leak #1056
This commit is contained in:
@@ -13,8 +13,7 @@ func NewWALCheckpointJob() *WALCheckpointJob {
|
|||||||
|
|
||||||
func (s *WALCheckpointJob) Run() {
|
func (s *WALCheckpointJob) Run() {
|
||||||
db := database.GetDB()
|
db := database.GetDB()
|
||||||
_, err := db.Raw("PRAGMA wal_checkpoint(FULL)").Rows()
|
if err := db.Exec("PRAGMA wal_checkpoint(FULL)").Error; err != nil {
|
||||||
if err != nil {
|
|
||||||
logger.Error("Error checkpointing WAL: ", err.Error())
|
logger.Error("Error checkpointing WAL: ", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-1
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/alireza0/s-ui/config"
|
"github.com/alireza0/s-ui/config"
|
||||||
"github.com/alireza0/s-ui/database/model"
|
"github.com/alireza0/s-ui/database/model"
|
||||||
@@ -56,11 +57,22 @@ func OpenDB(dbPath string) error {
|
|||||||
}
|
}
|
||||||
dsn := dbPath + sep + "_busy_timeout=10000&_journal_mode=WAL"
|
dsn := dbPath + sep + "_busy_timeout=10000&_journal_mode=WAL"
|
||||||
db, err = gorm.Open(sqlite.Open(dsn), c)
|
db, err = gorm.Open(sqlite.Open(dsn), c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlDB, err := db.DB()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
sqlDB.SetMaxOpenConns(25)
|
||||||
|
sqlDB.SetMaxIdleConns(5)
|
||||||
|
sqlDB.SetConnMaxLifetime(time.Hour)
|
||||||
|
|
||||||
if config.IsDebug() {
|
if config.IsDebug() {
|
||||||
db = db.Debug()
|
db = db.Debug()
|
||||||
}
|
}
|
||||||
return err
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitDB(dbPath string) error {
|
func InitDB(dbPath string) error {
|
||||||
|
|||||||
+1
-2
@@ -378,8 +378,7 @@ func (s *ClientService) DepleteClients() ([]uint, error) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
tx.Commit()
|
tx.Commit()
|
||||||
_, err1 := db.Raw("PRAGMA wal_checkpoint(FULL)").Rows()
|
if err1 := db.Exec("PRAGMA wal_checkpoint(FULL)").Error; err1 != nil {
|
||||||
if err1 != nil {
|
|
||||||
logger.Error("Error checkpointing WAL: ", err1.Error())
|
logger.Error("Error checkpointing WAL: ", err1.Error())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user