feat: 备份恢复应用增加任务日志 (#6619)
Some checks failed
sync2gitee / repo-sync (push) Failing after -9m40s

This commit is contained in:
zhengkunwang 2024-09-29 18:03:46 +08:00 committed by GitHub
parent 4d560a3764
commit 5beb93dde2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -38,10 +38,12 @@ func (u *BackupService) AppBackup(req dto.CommonBackup) (*model.BackupRecord, er
backupDir := path.Join(global.CONF.System.Backup, itemDir) backupDir := path.Join(global.CONF.System.Backup, itemDir)
fileName := fmt.Sprintf("%s_%s.tar.gz", req.DetailName, timeNow+common.RandStrAndNum(5)) fileName := fmt.Sprintf("%s_%s.tar.gz", req.DetailName, timeNow+common.RandStrAndNum(5))
if err := handleAppBackup(&install, nil, backupDir, fileName, "", req.Secret, req.TaskID); err != nil {
backupApp := func() (*model.BackupRecord, error) {
if err = handleAppBackup(&install, nil, backupDir, fileName, "", req.Secret, req.TaskID); err != nil {
global.LOG.Errorf("backup app %s failed, err: %v", req.DetailName, err)
return nil, err return nil, err
} }
record := &model.BackupRecord{ record := &model.BackupRecord{
Type: "app", Type: "app",
Name: req.Name, Name: req.Name,
@ -51,7 +53,6 @@ func (u *BackupService) AppBackup(req dto.CommonBackup) (*model.BackupRecord, er
FileDir: itemDir, FileDir: itemDir,
FileName: fileName, FileName: fileName,
} }
if err := backupRepo.CreateRecord(record); err != nil { if err := backupRepo.CreateRecord(record); err != nil {
global.LOG.Errorf("save backup record failed, err: %v", err) global.LOG.Errorf("save backup record failed, err: %v", err)
return nil, err return nil, err
@ -59,6 +60,16 @@ func (u *BackupService) AppBackup(req dto.CommonBackup) (*model.BackupRecord, er
return record, nil return record, nil
} }
if req.TaskID != "" {
go func() {
_, _ = backupApp()
}()
} else {
return backupApp()
}
return nil, nil
}
func (u *BackupService) AppRecover(req dto.CommonRecover) error { func (u *BackupService) AppRecover(req dto.CommonRecover) error {
app, err := appRepo.GetFirst(appRepo.WithKey(req.Name)) app, err := appRepo.GetFirst(appRepo.WithKey(req.Name))
if err != nil { if err != nil {
@ -76,9 +87,11 @@ func (u *BackupService) AppRecover(req dto.CommonRecover) error {
if _, err := compose.Down(install.GetComposePath()); err != nil { if _, err := compose.Down(install.GetComposePath()); err != nil {
return err return err
} }
go func() {
if err := handleAppRecover(&install, nil, req.File, false, req.Secret, req.TaskID); err != nil { if err := handleAppRecover(&install, nil, req.File, false, req.Secret, req.TaskID); err != nil {
return err global.LOG.Errorf("recover app %s failed, err: %v", req.DetailName, err)
} }
}()
return nil return nil
} }
@ -338,11 +351,11 @@ func handleAppRecover(install *model.AppInstall, parentTask *task.Task, recoverF
} }
} }
recoverTask.AddSubTask(task.GetTaskName(install.Name, task.TaskBackup, task.TaskScopeApp), recoverApp, rollBackApp) recoverTask.AddSubTask(task.GetTaskName(install.Name, task.TaskRecover, task.TaskScopeApp), recoverApp, rollBackApp)
if parentTask != nil { if parentTask != nil {
return recoverApp(parentTask) return recoverApp(parentTask)
} }
return nil return recoverTask.Execute()
} }
func reCreateDB(dbID uint, database model.Database, oldEnv string) (*model.DatabaseMysql, map[string]interface{}, error) { func reCreateDB(dbID uint, database model.Database, oldEnv string) (*model.DatabaseMysql, map[string]interface{}, error) {