fix db WAL memory leak #1056

This commit is contained in:
Alireza Ahmadi
2026-03-22 19:02:09 +01:00
parent 135fcb0cda
commit 9d35e02e0e
3 changed files with 15 additions and 5 deletions
+1 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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 {