Update DB WAL before backup

This commit is contained in:
Alireza Ahmadi
2023-12-08 01:26:51 +01:00
parent 5725420197
commit 03e1434051
3 changed files with 22 additions and 1 deletions

View File

@@ -110,3 +110,12 @@ func IsSQLiteDB(file io.Reader) (bool, error) {
}
return bytes.Equal(buf, signature), nil
}
func Checkpoint() error {
// Update WAL
err := db.Exec("PRAGMA wal_checkpoint;").Error
if err != nil {
return err
}
return nil
}

View File

@@ -418,6 +418,11 @@ func (s *ServerService) GetConfigJson() (interface{}, error) {
}
func (s *ServerService) GetDb() ([]byte, error) {
// Update by manually trigger a checkpoint operation
err := database.Checkpoint()
if err != nil {
return nil, err
}
// Open the file for reading
file, err := os.Open(config.GetDBPath())
if err != nil {

View File

@@ -9,6 +9,7 @@ import (
"strings"
"time"
"x-ui/config"
"x-ui/database"
"x-ui/database/model"
"x-ui/logger"
"x-ui/util/common"
@@ -697,12 +698,18 @@ func (t *Tgbot) sendBackup(chatId int64) {
return
}
// Update by manually trigger a checkpoint operation
err := database.Checkpoint()
if err != nil {
logger.Warning("Error in trigger a checkpoint operation: ", err)
}
output := t.I18nBot("tgbot.messages.backupTime", "Time=="+time.Now().Format("2006-01-02 15:04:05"))
t.SendMsgToTgbot(chatId, output)
file := tgbotapi.FilePath(config.GetDBPath())
msg := tgbotapi.NewDocument(chatId, file)
_, err := bot.Send(msg)
_, err = bot.Send(msg)
if err != nil {
logger.Warning("Error in uploading backup: ", err)
}