fix: Fix the problem of recovering application and website task logs (#8281)

This commit is contained in:
ssongliu 2025-03-31 17:36:33 +08:00 committed by GitHub
parent ac722054d2
commit 302877771c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 46 additions and 10 deletions

View file

@ -204,7 +204,7 @@ func handleAppRecover(install *model.AppInstall, parentTask *task.Task, recoverF
fileOp := files.NewFileOp() fileOp := files.NewFileOp()
if !isRollback { if !isRollback {
rollbackFile = path.Join(global.Dir.TmpDir, fmt.Sprintf("app/%s_%s.tar.gz", install.Name, time.Now().Format(constant.DateTimeSlimLayout))) rollbackFile = path.Join(global.Dir.TmpDir, fmt.Sprintf("app/%s_%s.tar.gz", install.Name, time.Now().Format(constant.DateTimeSlimLayout)))
if err := handleAppBackup(install, nil, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", ""); err != nil { if err := handleAppBackup(install, recoverTask, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", taskID); err != nil {
t.Log(fmt.Sprintf("backup app %s for rollback before recover failed, err: %v", install.Name, err)) t.Log(fmt.Sprintf("backup app %s for rollback before recover failed, err: %v", install.Name, err))
} }
} }

View file

@ -39,7 +39,7 @@ func (u *BackupService) WebsiteBackup(req dto.CommonBackup) error {
fileName := fmt.Sprintf("%s_%s.tar.gz", website.Alias, timeNow+common.RandStrAndNum(5)) fileName := fmt.Sprintf("%s_%s.tar.gz", website.Alias, timeNow+common.RandStrAndNum(5))
go func() { go func() {
if err = handleWebsiteBackup(&website, backupDir, fileName, "", req.Secret, req.TaskID); err != nil { if err = handleWebsiteBackup(&website, nil, backupDir, fileName, "", req.Secret, req.TaskID); err != nil {
global.LOG.Errorf("backup website %s failed, err: %v", website.Alias, err) global.LOG.Errorf("backup website %s failed, err: %v", website.Alias, err)
return return
} }
@ -82,7 +82,7 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
isOk := false isOk := false
if !isRollback { if !isRollback {
rollbackFile := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s_%s.tar.gz", website.Alias, time.Now().Format(constant.DateTimeSlimLayout))) rollbackFile := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s_%s.tar.gz", website.Alias, time.Now().Format(constant.DateTimeSlimLayout)))
if err := handleWebsiteBackup(website, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", ""); err != nil { if err := handleWebsiteBackup(website, recoverTask, path.Dir(rollbackFile), path.Base(rollbackFile), "", "", taskID); err != nil {
return fmt.Errorf("backup website %s for rollback before recover failed, err: %v", website.Alias, err) return fmt.Errorf("backup website %s for rollback before recover failed, err: %v", website.Alias, err)
} }
defer func() { defer func() {
@ -202,12 +202,20 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
return recoverTask.Execute() return recoverTask.Execute()
} }
func handleWebsiteBackup(website *model.Website, backupDir, fileName, excludes, secret, taskID string) error { func handleWebsiteBackup(website *model.Website, parentTask *task.Task, backupDir, fileName, excludes, secret, taskID string) error {
backupTask, err := task.NewTaskWithOps(website.Alias, task.TaskBackup, task.TaskScopeWebsite, taskID, website.ID) var (
if err != nil { err error
return err backupTask *task.Task
)
backupTask = parentTask
if parentTask == nil {
backupTask, err = task.NewTaskWithOps(website.Alias, task.TaskBackup, task.TaskScopeWebsite, taskID, website.ID)
if err != nil {
return err
}
} }
backupTask.AddSubTask(task.GetTaskName(website.Alias, task.TaskBackup, task.TaskScopeWebsite), func(t *task.Task) error {
backupWebsite := func(t *task.Task) error {
fileOp := files.NewFileOp() fileOp := files.NewFileOp()
tmpDir := fmt.Sprintf("%s/%s", backupDir, strings.ReplaceAll(fileName, ".tar.gz", "")) tmpDir := fmt.Sprintf("%s/%s", backupDir, strings.ReplaceAll(fileName, ".tar.gz", ""))
if !fileOp.Stat(tmpDir) { if !fileOp.Stat(tmpDir) {
@ -273,7 +281,11 @@ func handleWebsiteBackup(website *model.Website, backupDir, fileName, excludes,
} }
t.Log(i18n.GetWithName("CompressFileSuccess", fileName)) t.Log(i18n.GetWithName("CompressFileSuccess", fileName))
return nil return nil
}, nil) }
backupTask.AddSubTask(task.GetTaskName(website.Alias, task.TaskBackup, task.TaskScopeApp), backupWebsite, nil)
if parentTask != nil {
return backupWebsite(parentTask)
}
return backupTask.Execute() return backupTask.Execute()
} }

View file

@ -85,7 +85,7 @@ func (u *CronjobService) handleWebsite(cronjob model.Cronjob, startTime time.Tim
record.DownloadAccountID, record.SourceAccountIDs = cronjob.DownloadAccountID, cronjob.SourceAccountIDs record.DownloadAccountID, record.SourceAccountIDs = cronjob.DownloadAccountID, cronjob.SourceAccountIDs
backupDir := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s", web.Alias)) backupDir := path.Join(global.Dir.TmpDir, fmt.Sprintf("website/%s", web.Alias))
record.FileName = fmt.Sprintf("website_%s_%s.tar.gz", web.Alias, startTime.Format(constant.DateTimeSlimLayout)+common.RandStrAndNum(5)) record.FileName = fmt.Sprintf("website_%s_%s.tar.gz", web.Alias, startTime.Format(constant.DateTimeSlimLayout)+common.RandStrAndNum(5))
if err := handleWebsiteBackup(&web, backupDir, record.FileName, cronjob.ExclusionRules, cronjob.Secret, taskID); err != nil { if err := handleWebsiteBackup(&web, nil, backupDir, record.FileName, cronjob.ExclusionRules, cronjob.Secret, taskID); err != nil {
return err return err
} }
downloadPath, err := u.uploadCronjobBackFile(cronjob, accountMap, path.Join(backupDir, record.FileName)) downloadPath, err := u.uploadCronjobBackFile(cronjob, accountMap, path.Join(backupDir, record.FileName))

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "Detected that this backup account is not public, please check
ErrOSSConn: "Unable to get the latest version, please check the server's external network connectivity." ErrOSSConn: "Unable to get the latest version, please check the server's external network connectivity."
#license #license
LicenseCheck: 'Check if the license is available'
ErrLicenseInUsed: 'The license is already bound. Please check and try again!'
ErrLicenseExpired: 'The license has expired. Please check and try again!'
ErrLicense: "License format error, please check and retry!" ErrLicense: "License format error, please check and retry!"
ErrLicenseCheck: "License validation failed, please check and retry!" ErrLicenseCheck: "License validation failed, please check and retry!"
ErrXpackVersion: "License validation failed, this license is version-limited, cannot import, please check and retry!" ErrXpackVersion: "License validation failed, this license is version-limited, cannot import, please check and retry!"

View file

@ -44,6 +44,9 @@ ErrOSSConn: "最新バージョンを取得できません。外部ネットワ
#license #license
LicenseCheck: 'ライセンスが利用可能か確認する'
ErrLicenseInUsed: 'このライセンスは既に紐付けられています。確認して再試行してください!'
ErrLicenseExpired: 'このライセンスは期限切れです。確認して再試行してください!'
ErrLicense: "ライセンスフォーマットエラー、確認して再試行してください!" ErrLicense: "ライセンスフォーマットエラー、確認して再試行してください!"
ErrLicenseCheck: "ライセンスの確認に失敗しました、確認して再試行してください!" ErrLicenseCheck: "ライセンスの確認に失敗しました、確認して再試行してください!"
ErrXpackVersion: "ライセンスの確認に失敗しました、このライセンスはバージョン制限があり、正常にインポートできません、確認して再試行してください!" ErrXpackVersion: "ライセンスの確認に失敗しました、このライセンスはバージョン制限があり、正常にインポートできません、確認して再試行してください!"

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "이 백업 계정이 공개된 것으로 감지되지 않았
ErrOSSConn: "최신 버전을 가져올 수 없습니다. 외부 네트워크 연결을 확인하십시오." ErrOSSConn: "최신 버전을 가져올 수 없습니다. 외부 네트워크 연결을 확인하십시오."
#license #license
LicenseCheck: '라이선스 사용 가능 여부 확인'
ErrLicenseInUsed: '해당 라이선스가 이미 연결되었습니다. 확인 후 다시 시도하세요!'
ErrLicenseExpired: '해당 라이선스가 만료되었습니다. 확인 후 다시 시도하세요!'
ErrLicense: "라이선스 형식이 잘못되었습니다. 다시 확인하고 시도해 주세요!" ErrLicense: "라이선스 형식이 잘못되었습니다. 다시 확인하고 시도해 주세요!"
ErrLicenseCheck: "라이선스 검증 실패. 다시 확인하고 시도해 주세요!" ErrLicenseCheck: "라이선스 검증 실패. 다시 확인하고 시도해 주세요!"
ErrXpackVersion: "라이선스 검증 실패, 이 라이선스는 버전 제한이 있습니다. 성공적으로 가져올 수 없습니다. 다시 확인하고 시도해 주세요!" ErrXpackVersion: "라이선스 검증 실패, 이 라이선스는 버전 제한이 있습니다. 성공적으로 가져올 수 없습니다. 다시 확인하고 시도해 주세요!"

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "Akaun sandaran ini dikesan tidak awam, sila semak semula dan c
ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sambungan rangkaian luar pelayan." ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sambungan rangkaian luar pelayan."
#license #license
LicenseCheck: 'Periksa sama ada lesen tersedia'
ErrLicenseInUsed: 'Lesen ini telah terikat. Sila periksa dan cuba lagi!'
ErrLicenseExpired: 'Lesen ini telah tamat tempoh. Sila periksa dan cuba lagi!'
ErrLicense: "Format lesen tidak sah, sila semak dan cuba lagi!" ErrLicense: "Format lesen tidak sah, sila semak dan cuba lagi!"
ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi!" ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi!"
ErrXpackVersion: "Pengesahan lesen gagal, lesen ini terhad kepada versi tertentu, sila semak dan cuba lagi!" ErrXpackVersion: "Pengesahan lesen gagal, lesen ini terhad kepada versi tertentu, sila semak dan cuba lagi!"

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "A conta de backup detectada não é pública, por favor verifi
ErrOSSConn: "Não foi possível obter a versão mais recente, verifique a conectividade externa do servidor." ErrOSSConn: "Não foi possível obter a versão mais recente, verifique a conectividade externa do servidor."
#license #license
LicenseCheck: 'Verificar se a licença está disponível'
ErrLicenseInUsed: 'Esta licença já está vinculada. Por favor, verifique e tente novamente!'
ErrLicenseExpired: 'Esta licença expirou. Por favor, verifique e tente novamente!'
ErrLicense: "Formato de licença inválido, por favor verifique e tente novamente!" ErrLicense: "Formato de licença inválido, por favor verifique e tente novamente!"
ErrLicenseCheck: "Falha na verificação da licença, por favor verifique e tente novamente!" ErrLicenseCheck: "Falha na verificação da licença, por favor verifique e tente novamente!"
ErrXpackVersion: "Falha na verificação da licença, esta licença é restrita a uma versão específica, por favor verifique e tente novamente!" ErrXpackVersion: "Falha na verificação da licença, esta licença é restrita a uma versão específica, por favor verifique e tente novamente!"

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "Обнаружено, что эта учетная запис
ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети." ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети."
#license #license
LicenseCheck: 'Проверить доступность лицензии'
ErrLicenseInUsed: 'Лицензия уже привязана. Пожалуйста, проверьте и повторите попытку!'
ErrLicenseExpired: 'Срок действия лицензии истек. Пожалуйста, проверьте и повторите попытку!'
ErrLicense: "Неверный формат лицензии, проверьте и повторите попытку!" ErrLicense: "Неверный формат лицензии, проверьте и повторите попытку!"
ErrLicenseCheck: "Ошибка проверки лицензии, проверьте и повторите попытку!" ErrLicenseCheck: "Ошибка проверки лицензии, проверьте и повторите попытку!"
ErrXpackVersion: "Ошибка проверки лицензии, лицензия ограничена по версии, проверьте и повторите попытку!" ErrXpackVersion: "Ошибка проверки лицензии, лицензия ограничена по версии, проверьте и повторите попытку!"

View file

@ -43,6 +43,9 @@ ErrBackupPublic: "檢測到該備份帳號為非公用,請檢查後再試!"
ErrOSSConn: "無法獲取最新版本,請確認伺服器是否能夠連接外部網路。" ErrOSSConn: "無法獲取最新版本,請確認伺服器是否能夠連接外部網路。"
#license #license
LicenseCheck: '檢查許可證是否可用'
ErrLicenseInUsed: '檢測到該許可證已被綁定,請檢查後重試!'
ErrLicenseExpired: '檢測到該許可證已過期,請檢查後重試!'
ErrLicense: "許可證格式錯誤,請檢查後重試!" ErrLicense: "許可證格式錯誤,請檢查後重試!"
ErrLicenseCheck: "許可證校驗失敗,請檢查後重試!" ErrLicenseCheck: "許可證校驗失敗,請檢查後重試!"
ErrXpackVersion: "許可證校驗失敗,該許可證受版本限制,無法成功導入,請檢查後重試!" ErrXpackVersion: "許可證校驗失敗,該許可證受版本限制,無法成功導入,請檢查後重試!"

View file

@ -44,6 +44,9 @@ ErrBackupPublic: "检测到该备份账号为非公用,请检查后重试!"
ErrOSSConn: "无法获取最新版本,请确认服务器是否能够连接外部网络。" ErrOSSConn: "无法获取最新版本,请确认服务器是否能够连接外部网络。"
#license #license
LicenseCheck: '检查许可证是否可用'
ErrLicenseInUsed: '检查到该许可证已被绑定,请检查后重试!'
ErrLicenseExpired: '检查到该许可证已过期,请检查后重试!'
ErrLicense: "许可证格式错误,请检查后重试!" ErrLicense: "许可证格式错误,请检查后重试!"
ErrLicenseCheck: "许可证校验失败,请检查后重试!" ErrLicenseCheck: "许可证校验失败,请检查后重试!"
ErrXpackVersion: "许可证校验失败,该许可证受版本限制,无法成功导入,请检查后重试!" ErrXpackVersion: "许可证校验失败,该许可证受版本限制,无法成功导入,请检查后重试!"