Skip to content

Commit 3028777

Browse files
authored
fix: Fix the problem of recovering application and website task logs (#8281)
1 parent ac72205 commit 3028777

11 files changed

Lines changed: 46 additions & 10 deletions

File tree

agent/app/service/backup_app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func handleAppRecover(install *model.AppInstall, parentTask *task.Task, recoverF
204204
fileOp := files.NewFileOp()
205205
if !isRollback {
206206
rollbackFile = path.Join(global.Dir.TmpDir, fmt.Sprintf("app/%s_%s.tar.gz", install.Name, time.Now().Format(constant.DateTimeSlimLayout)))
207-
if err := handleAppBackup(install, nil, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", ""); err != nil {
207+
if err := handleAppBackup(install, recoverTask, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", taskID); err != nil {
208208
t.Log(fmt.Sprintf("backup app %s for rollback before recover failed, err: %v", install.Name, err))
209209
}
210210
}

agent/app/service/backup_website.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func (u *BackupService) WebsiteBackup(req dto.CommonBackup) error {
3939
fileName := fmt.Sprintf("%s_%s.tar.gz", website.Alias, timeNow+common.RandStrAndNum(5))
4040

4141
go func() {
42-
if err = handleWebsiteBackup(&website, backupDir, fileName, "", req.Secret, req.TaskID); err != nil {
42+
if err = handleWebsiteBackup(&website, nil, backupDir, fileName, "", req.Secret, req.TaskID); err != nil {
4343
global.LOG.Errorf("backup website %s failed, err: %v", website.Alias, err)
4444
return
4545
}
@@ -82,7 +82,7 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
8282
isOk := false
8383
if !isRollback {
8484
rollbackFile := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s_%s.tar.gz", website.Alias, time.Now().Format(constant.DateTimeSlimLayout)))
85-
if err := handleWebsiteBackup(website, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", ""); err != nil {
85+
if err := handleWebsiteBackup(website, recoverTask, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", taskID); err != nil {
8686
return fmt.Errorf("backup website %s for rollback before recover failed, err: %v", website.Alias, err)
8787
}
8888
defer func() {
@@ -202,12 +202,20 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
202202
return recoverTask.Execute()
203203
}
204204

205-
func handleWebsiteBackup(website *model.Website, backupDir, fileName, excludes, secret, taskID string) error {
206-
backupTask, err := task.NewTaskWithOps(website.Alias, task.TaskBackup, task.TaskScopeWebsite, taskID, website.ID)
207-
if err != nil {
208-
return err
205+
func handleWebsiteBackup(website *model.Website, parentTask *task.Task, backupDir, fileName, excludes, secret, taskID string) error {
206+
var (
207+
err error
208+
backupTask *task.Task
209+
)
210+
backupTask = parentTask
211+
if parentTask == nil {
212+
backupTask, err = task.NewTaskWithOps(website.Alias, task.TaskBackup, task.TaskScopeWebsite, taskID, website.ID)
213+
if err != nil {
214+
return err
215+
}
209216
}
210-
backupTask.AddSubTask(task.GetTaskName(website.Alias, task.TaskBackup, task.TaskScopeWebsite), func(t *task.Task) error {
217+
218+
backupWebsite := func(t *task.Task) error {
211219
fileOp := files.NewFileOp()
212220
tmpDir := fmt.Sprintf("%s/%s", backupDir, strings.ReplaceAll(fileName, ".tar.gz", ""))
213221
if !fileOp.Stat(tmpDir) {
@@ -273,7 +281,11 @@ func handleWebsiteBackup(website *model.Website, backupDir, fileName, excludes,
273281
}
274282
t.Log(i18n.GetWithName("CompressFileSuccess", fileName))
275283
return nil
276-
}, nil)
284+
}
285+
backupTask.AddSubTask(task.GetTaskName(website.Alias, task.TaskBackup, task.TaskScopeApp), backupWebsite, nil)
286+
if parentTask != nil {
287+
return backupWebsite(parentTask)
288+
}
277289
return backupTask.Execute()
278290
}
279291

agent/app/service/cronjob_backup.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (u *CronjobService) handleWebsite(cronjob model.Cronjob, startTime time.Tim
8585
record.DownloadAccountID, record.SourceAccountIDs = cronjob.DownloadAccountID, cronjob.SourceAccountIDs
8686
backupDir := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s", web.Alias))
8787
record.FileName = fmt.Sprintf("website_%s_%s.tar.gz", web.Alias, startTime.Format(constant.DateTimeSlimLayout)+common.RandStrAndNum(5))
88-
if err := handleWebsiteBackup(&web, backupDir, record.FileName, cronjob.ExclusionRules, cronjob.Secret, taskID); err != nil {
88+
if err := handleWebsiteBackup(&web, nil, backupDir, record.FileName, cronjob.ExclusionRules, cronjob.Secret, taskID); err != nil {
8989
return err
9090
}
9191
downloadPath, err := u.uploadCronjobBackFile(cronjob, accountMap, path.Join(backupDir, record.FileName))

core/i18n/lang/en.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "Detected that this backup account is not public, please check
4343
ErrOSSConn: "Unable to get the latest version, please check the server's external network connectivity."
4444

4545
#license
46+
LicenseCheck: 'Check if the license is available'
47+
ErrLicenseInUsed: 'The license is already bound. Please check and try again!'
48+
ErrLicenseExpired: 'The license has expired. Please check and try again!'
4649
ErrLicense: "License format error, please check and retry!"
4750
ErrLicenseCheck: "License validation failed, please check and retry!"
4851
ErrXpackVersion: "License validation failed, this license is version-limited, cannot import, please check and retry!"

core/i18n/lang/ja.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ ErrOSSConn: "最新バージョンを取得できません。外部ネットワ
4444

4545

4646
#license
47+
LicenseCheck: 'ライセンスが利用可能か確認する'
48+
ErrLicenseInUsed: 'このライセンスは既に紐付けられています。確認して再試行してください!'
49+
ErrLicenseExpired: 'このライセンスは期限切れです。確認して再試行してください!'
4750
ErrLicense: "ライセンスフォーマットエラー、確認して再試行してください!"
4851
ErrLicenseCheck: "ライセンスの確認に失敗しました、確認して再試行してください!"
4952
ErrXpackVersion: "ライセンスの確認に失敗しました、このライセンスはバージョン制限があり、正常にインポートできません、確認して再試行してください!"

core/i18n/lang/ko.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "이 백업 계정이 공개된 것으로 감지되지 않았
4343
ErrOSSConn: "최신 버전을 가져올 수 없습니다. 외부 네트워크 연결을 확인하십시오."
4444

4545
#license
46+
LicenseCheck: '라이선스 사용 가능 여부 확인'
47+
ErrLicenseInUsed: '해당 라이선스가 이미 연결되었습니다. 확인 후 다시 시도하세요!'
48+
ErrLicenseExpired: '해당 라이선스가 만료되었습니다. 확인 후 다시 시도하세요!'
4649
ErrLicense: "라이선스 형식이 잘못되었습니다. 다시 확인하고 시도해 주세요!"
4750
ErrLicenseCheck: "라이선스 검증 실패. 다시 확인하고 시도해 주세요!"
4851
ErrXpackVersion: "라이선스 검증 실패, 이 라이선스는 버전 제한이 있습니다. 성공적으로 가져올 수 없습니다. 다시 확인하고 시도해 주세요!"

core/i18n/lang/ms.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "Akaun sandaran ini dikesan tidak awam, sila semak semula dan c
4343
ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sambungan rangkaian luar pelayan."
4444

4545
#license
46+
LicenseCheck: 'Periksa sama ada lesen tersedia'
47+
ErrLicenseInUsed: 'Lesen ini telah terikat. Sila periksa dan cuba lagi!'
48+
ErrLicenseExpired: 'Lesen ini telah tamat tempoh. Sila periksa dan cuba lagi!'
4649
ErrLicense: "Format lesen tidak sah, sila semak dan cuba lagi!"
4750
ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi!"
4851
ErrXpackVersion: "Pengesahan lesen gagal, lesen ini terhad kepada versi tertentu, sila semak dan cuba lagi!"

core/i18n/lang/pt-BR.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "A conta de backup detectada não é pública, por favor verifi
4343
ErrOSSConn: "Não foi possível obter a versão mais recente, verifique a conectividade externa do servidor."
4444

4545
#license
46+
LicenseCheck: 'Verificar se a licença está disponível'
47+
ErrLicenseInUsed: 'Esta licença já está vinculada. Por favor, verifique e tente novamente!'
48+
ErrLicenseExpired: 'Esta licença expirou. Por favor, verifique e tente novamente!'
4649
ErrLicense: "Formato de licença inválido, por favor verifique e tente novamente!"
4750
ErrLicenseCheck: "Falha na verificação da licença, por favor verifique e tente novamente!"
4851
ErrXpackVersion: "Falha na verificação da licença, esta licença é restrita a uma versão específica, por favor verifique e tente novamente!"

core/i18n/lang/ru.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "Обнаружено, что эта учетная запис
4343
ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети."
4444

4545
#license
46+
LicenseCheck: 'Проверить доступность лицензии'
47+
ErrLicenseInUsed: 'Лицензия уже привязана. Пожалуйста, проверьте и повторите попытку!'
48+
ErrLicenseExpired: 'Срок действия лицензии истек. Пожалуйста, проверьте и повторите попытку!'
4649
ErrLicense: "Неверный формат лицензии, проверьте и повторите попытку!"
4750
ErrLicenseCheck: "Ошибка проверки лицензии, проверьте и повторите попытку!"
4851
ErrXpackVersion: "Ошибка проверки лицензии, лицензия ограничена по версии, проверьте и повторите попытку!"

core/i18n/lang/zh-Hant.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ErrBackupPublic: "檢測到該備份帳號為非公用,請檢查後再試!"
4343
ErrOSSConn: "無法獲取最新版本,請確認伺服器是否能夠連接外部網路。"
4444

4545
#license
46+
LicenseCheck: '檢查許可證是否可用'
47+
ErrLicenseInUsed: '檢測到該許可證已被綁定,請檢查後重試!'
48+
ErrLicenseExpired: '檢測到該許可證已過期,請檢查後重試!'
4649
ErrLicense: "許可證格式錯誤,請檢查後重試!"
4750
ErrLicenseCheck: "許可證校驗失敗,請檢查後重試!"
4851
ErrXpackVersion: "許可證校驗失敗,該許可證受版本限制,無法成功導入,請檢查後重試!"

0 commit comments

Comments
 (0)