Skip to content

Commit d6b0096

Browse files
authored
fix: Fix the issue of database backup failure (#11060)
1 parent 6d4c1f8 commit d6b0096

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

agent/app/service/backup_mysql.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,14 @@ import (
88
"strings"
99
"time"
1010

11-
"github.com/1Panel-dev/1Panel/agent/app/repo"
12-
13-
"github.com/1Panel-dev/1Panel/agent/constant"
14-
"github.com/1Panel-dev/1Panel/agent/i18n"
15-
16-
"github.com/1Panel-dev/1Panel/agent/buserr"
17-
1811
"github.com/1Panel-dev/1Panel/agent/app/dto"
1912
"github.com/1Panel-dev/1Panel/agent/app/model"
13+
"github.com/1Panel-dev/1Panel/agent/app/repo"
2014
"github.com/1Panel-dev/1Panel/agent/app/task"
15+
"github.com/1Panel-dev/1Panel/agent/buserr"
16+
"github.com/1Panel-dev/1Panel/agent/constant"
2117
"github.com/1Panel-dev/1Panel/agent/global"
18+
"github.com/1Panel-dev/1Panel/agent/i18n"
2219
"github.com/1Panel-dev/1Panel/agent/utils/common"
2320
"github.com/1Panel-dev/1Panel/agent/utils/files"
2421
"github.com/1Panel-dev/1Panel/agent/utils/mysql/client"
@@ -94,7 +91,7 @@ func handleMysqlBackup(db DatabaseHelper, parentTask *task.Task, recordID uint,
9491
if parentTask != nil {
9592
return itemHandler()
9693
}
97-
backupTask.AddSubTaskWithOps(task.GetTaskName(itemName, task.TaskBackup, task.TaskScopeBackup), func(t *task.Task) error { return itemHandler() }, nil, 3, time.Hour)
94+
backupTask.AddSubTaskWithOps(task.GetTaskName(itemName, task.TaskBackup, task.TaskScopeBackup), func(t *task.Task) error { return itemHandler() }, nil, 0, 3*time.Hour)
9895
go func() {
9996
if err := backupTask.Execute(); err != nil {
10097
backupRepo.UpdateRecordByMap(recordID, map[string]interface{}{"status": constant.StatusFailed, "message": err.Error()})
@@ -196,7 +193,7 @@ func handleMysqlRecover(req dto.CommonRecover, parentTask *task.Task, isRollback
196193
return recoverDatabase(parentTask)
197194
}
198195

199-
itemTask.AddSubTaskWithOps(i18n.GetMsgByKey("TaskRecover"), recoverDatabase, nil, 3, time.Hour)
196+
itemTask.AddSubTaskWithOps(i18n.GetMsgByKey("TaskRecover"), recoverDatabase, nil, 0, 3*time.Hour)
200197
go func() {
201198
_ = itemTask.Execute()
202199
}()

agent/app/service/backup_postgresql.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func handlePostgresqlBackup(db DatabaseHelper, parentTask *task.Task, recordID u
8686
if parentTask != nil {
8787
return itemHandler()
8888
}
89-
backupTask.AddSubTaskWithOps(task.GetTaskName(itemName, task.TaskBackup, task.TaskScopeBackup), func(t *task.Task) error { return itemHandler() }, nil, 3, time.Hour)
89+
backupTask.AddSubTaskWithOps(task.GetTaskName(itemName, task.TaskBackup, task.TaskScopeBackup), func(t *task.Task) error { return itemHandler() }, nil, 0, 3*time.Hour)
9090
go func() {
9191
if err := backupTask.Execute(); err != nil {
9292
backupRepo.UpdateRecordByMap(recordID, map[string]interface{}{"status": constant.StatusFailed, "message": err.Error()})
@@ -130,10 +130,12 @@ func handlePostgresqlRecover(req dto.CommonRecover, parentTask *task.Task, isRol
130130
if !isRollback {
131131
rollbackFile := path.Join(global.Dir.TmpDir, fmt.Sprintf("database/%s/%s_%s.sql.gz", req.Type, req.DetailName, time.Now().Format(constant.DateTimeSlimLayout)))
132132
if err := cli.Backup(client.BackupInfo{
133+
Database: req.Name,
133134
Name: req.DetailName,
134135
TargetDir: path.Dir(rollbackFile),
135136
FileName: path.Base(rollbackFile),
136137

138+
Task: t,
137139
Timeout: 300,
138140
}); err != nil {
139141
return fmt.Errorf("backup postgresql db %s for rollback before recover failed, err: %v", req.DetailName, err)
@@ -142,9 +144,11 @@ func handlePostgresqlRecover(req dto.CommonRecover, parentTask *task.Task, isRol
142144
if !isOk {
143145
global.LOG.Info("recover failed, start to rollback now")
144146
if err := cli.Recover(client.RecoverInfo{
147+
Database: req.Name,
145148
Name: req.DetailName,
146149
SourceFile: rollbackFile,
147150

151+
Task: t,
148152
Timeout: 300,
149153
}); err != nil {
150154
global.LOG.Errorf("rollback postgresql db %s from %s failed, err: %v", req.DetailName, rollbackFile, err)
@@ -167,9 +171,11 @@ func handlePostgresqlRecover(req dto.CommonRecover, parentTask *task.Task, isRol
167171
t.LogWithStatus(i18n.GetMsgByKey("Decrypt"), err)
168172
}
169173
if err := cli.Recover(client.RecoverInfo{
174+
Database: req.Name,
170175
Name: req.DetailName,
171176
SourceFile: req.File,
172177
Username: dbInfo.Username,
178+
Task: t,
173179
Timeout: 300,
174180
}); err != nil {
175181
global.LOG.Errorf("recover postgresql db %s from %s failed, err: %v", req.DetailName, req.File, err)
@@ -182,7 +188,7 @@ func handlePostgresqlRecover(req dto.CommonRecover, parentTask *task.Task, isRol
182188
return recoverDatabase(parentTask)
183189
}
184190

185-
itemTask.AddSubTaskWithOps(i18n.GetMsgByKey("TaskRecover"), recoverDatabase, nil, 3, time.Hour)
191+
itemTask.AddSubTaskWithOps(i18n.GetMsgByKey("TaskRecover"), recoverDatabase, nil, 0, 3*time.Hour)
186192
go func() {
187193
_ = itemTask.Execute()
188194
}()

frontend/src/views/cronjob/cronjob/operate/index.vue

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,18 +1027,16 @@ const verifyScript = (rule: any, value: any, callback: any) => {
10271027
}
10281028
callback();
10291029
};
1030-
const verifyUrlItems = (rule: any, value: any, callback: any) => {
1030+
const verifyUrlItems = () => {
10311031
if (!form.urlItems || form.urlItems.length === 0) {
1032-
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
1033-
return;
1032+
return false;
10341033
}
10351034
for (const item of form.urlItems) {
10361035
if (!item) {
1037-
callback(new Error(i18n.global.t('cronjob.urlHelper')));
1038-
return;
1036+
return false;
10391037
}
10401038
}
1041-
callback();
1039+
return true;
10421040
};
10431041
10441042
const verifySpec = (rule: any, value: any, callback: any) => {
@@ -1179,7 +1177,6 @@ const rules = reactive({
11791177
websiteList: [Rules.requiredSelect],
11801178
appIdList: [Rules.requiredSelect],
11811179
dbNameList: [Rules.requiredSelect],
1182-
urlItems: [{ validator: verifyUrlItems, trigger: 'blur', required: true }],
11831180
files: [{ validator: verifyFiles, trigger: 'blur', required: true }],
11841181
sourceDir: [Rules.requiredInput],
11851182
sourceAccountItems: [Rules.requiredSelect],
@@ -1458,6 +1455,10 @@ function hasScript() {
14581455
14591456
const onSubmit = async (formEl: FormInstance | undefined) => {
14601457
let specs = [];
1458+
if (form.type === 'curl' && (form.urlItems.length === 0 || !verifyUrlItems())) {
1459+
MsgError(i18n.global.t('cronjob.urlHelper'));
1460+
return;
1461+
}
14611462
if (!form.specCustom) {
14621463
for (const item of form.specObjs) {
14631464
const itemSpec = transObjToSpec(item.specType, item.week, item.day, item.hour, item.minute, item.second);

0 commit comments

Comments
 (0)