From 00b25b39c5c26fe899d3350bd4096352ca3dd0bd Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:05:57 +0800 Subject: [PATCH] fix: Fix backup record loading timeout issue (#10126) --- agent/app/service/app_utils.go | 2 +- agent/app/service/backup_record.go | 17 +- agent/app/service/website.go | 2 +- frontend/src/views/cronjob/cronjob/index.vue | 6 +- .../views/cronjob/cronjob/record/index.vue | 188 +++++++++--------- frontend/src/views/home/index.vue | 2 +- 6 files changed, 116 insertions(+), 101 deletions(-) diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index df2296eea..f1c5cab84 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -1080,7 +1080,7 @@ func runScript(task *task.Task, appInstall *model.AppInstall, operate string) er task.LogStart(logStr) cmdMgr := cmd.NewCommandMgr(cmd.WithTimeout(10*time.Minute), cmd.WithWorkDir(workDir)) - out, err := cmdMgr.RunWithStdoutBashCf(scriptPath) + out, err := cmdMgr.RunWithStdoutBashC(scriptPath) if err != nil { if out != "" { err = errors.New(out) diff --git a/agent/app/service/backup_record.go b/agent/app/service/backup_record.go index f44dbbeb2..1d5feb8e8 100644 --- a/agent/app/service/backup_record.go +++ b/agent/app/service/backup_record.go @@ -6,6 +6,7 @@ import ( "os" "path" "sync" + "time" "github.com/1Panel-dev/1Panel/agent/app/dto" "github.com/1Panel-dev/1Panel/agent/app/model" @@ -256,13 +257,25 @@ func (u *BackupRecordService) LoadRecordSize(req dto.SearchForSize) ([]dto.Recor var datas []dto.RecordFileSize var wg sync.WaitGroup + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() for i := 0; i < len(list); i++ { datas = append(datas, dto.RecordFileSize{ID: list[i].ID}) if val, ok := clientMap[fmt.Sprintf("%v", list[i].DownloadID)]; ok { wg.Add(1) go func(index int) { - datas[index].Size, _ = val.client.Size(path.Join(val.backupPath, list[i].FilePath)) - wg.Done() + defer wg.Done() + done := make(chan struct{}, 1) + go func() { + datas[index].Size, _ = val.client.Size(path.Join(val.backupPath, list[i].FilePath)) + defer close(done) + }() + select { + case <-ctx.Done(): + return + case <-done: + return + } }(i) } } diff --git a/agent/app/service/website.go b/agent/app/service/website.go index b7c45e75f..6e825b04a 100644 --- a/agent/app/service/website.go +++ b/agent/app/service/website.go @@ -3366,7 +3366,7 @@ func (w WebsiteService) ExecComposer(req request.ExecComposerReq) error { execDir := strings.ReplaceAll(req.Dir, siteDir.Value, "/www") composerTask.AddSubTask("", func(t *task.Task) error { cmdStr := fmt.Sprintf("docker exec -u %s %s sh -c 'composer config -g repo.packagist composer %s && composer %s --working-dir=%s'", req.User, runtime.ContainerName, req.Mirror, command, execDir) - err = cmdMgr.RunBashCf(cmdStr) + err = cmdMgr.RunBashC(cmdStr) if err != nil { return err } diff --git a/frontend/src/views/cronjob/cronjob/index.vue b/frontend/src/views/cronjob/cronjob/index.vue index 2aff69c1d..93a8f9f4b 100644 --- a/frontend/src/views/cronjob/cronjob/index.vue +++ b/frontend/src/views/cronjob/cronjob/index.vue @@ -54,7 +54,7 @@ :data="data" :heightDiff="300" > - + { routerToNameWithQuery('CronjobOperate', { id: id }); }; +function selectable(row) { + return row.status !== 'Pending'; +} + const onDelete = async (row: Cronjob.CronjobInfo | null) => { let names = []; let ids = []; diff --git a/frontend/src/views/cronjob/cronjob/record/index.vue b/frontend/src/views/cronjob/cronjob/record/index.vue index c2152a3ba..793ae1547 100644 --- a/frontend/src/views/cronjob/cronjob/record/index.vue +++ b/frontend/src/views/cronjob/cronjob/record/index.vue @@ -86,99 +86,103 @@