diff --git a/agent/app/repo/task.go b/agent/app/repo/task.go index 716a12539..8667e8a45 100644 --- a/agent/app/repo/task.go +++ b/agent/app/repo/task.go @@ -112,7 +112,7 @@ func (t TaskRepo) CountExecutingTask() (int64, error) { return count, err } -func (u TaskRepo) Delete(opts ...DBOption) error { +func (t TaskRepo) Delete(opts ...DBOption) error { db := global.TaskDB for _, opt := range opts { db = opt(db) @@ -120,6 +120,6 @@ func (u TaskRepo) Delete(opts ...DBOption) error { return db.Delete(&model.Task{}).Error } -func (u TaskRepo) DeleteAll() error { +func (t TaskRepo) DeleteAll() error { return global.TaskDB.Where("1 = 1").Delete(&model.Task{}).Error } diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index 8724a1a08..6f0265047 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -11,6 +11,7 @@ import ( "os" "os/exec" "path" + "path/filepath" "reflect" "regexp" "strconv" @@ -428,6 +429,11 @@ func deleteAppInstall(deleteReq request.AppInstallDelete) error { } } _ = op.DeleteDir(appDir) + parentDir := filepath.Dir(appDir) + entries, err := os.ReadDir(parentDir) + if err == nil && len(entries) == 0 { + _ = op.DeleteDir(parentDir) + } tx.Commit() return nil } diff --git a/agent/app/service/runtime.go b/agent/app/service/runtime.go index c10197a59..0a9e5837e 100644 --- a/agent/app/service/runtime.go +++ b/agent/app/service/runtime.go @@ -736,6 +736,9 @@ func (r *RuntimeService) InstallPHPExtension(req request.PHPExtensionInstallReq) if err != nil { return err } + if task.CheckResourceTaskIsExecuting(task.TaskInstall, task.TaskScopeRuntimeExtension, runtime.ID) { + return buserr.New("ErrInstallExtension") + } installTask, err := task.NewTaskWithOps(req.Name, task.TaskInstall, task.TaskScopeRuntimeExtension, req.TaskID, runtime.ID) if err != nil { return err diff --git a/agent/app/task/task.go b/agent/app/task/task.go index 34fa0ad5e..ebf524619 100644 --- a/agent/app/task/task.go +++ b/agent/app/task/task.go @@ -100,6 +100,16 @@ func CheckTaskIsExecuting(name string) error { return nil } +func CheckResourceTaskIsExecuting(operate, scope string, resourceID uint) bool { + taskRepo := repo.NewITaskRepo() + task, _ := taskRepo.GetFirst( + taskRepo.WithByStatus(constant.StatusExecuting), + taskRepo.WithResourceID(resourceID), + taskRepo.WithOperate(operate), + repo.WithByType(scope)) + return task.ID != "" +} + func NewTask(name, operate, taskScope, taskID string, resourceID uint) (*Task, error) { if taskID == "" { taskID = uuid.New().String() diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index a55dd80bc..c969dd91c 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -416,4 +416,7 @@ ErrAlert: "告警信息格式错误,请检查后重试!" ErrAlertPush: "告警信息推送错误,请检查后重试!" ErrAlertSave: "告警信息保存错误,请检查后重试!" ErrAlertSync: "告警信息同步错误,请检查后重试!" -ErrAlertRemote: "告警信息远端错误,请检查后重试!" \ No newline at end of file +ErrAlertRemote: "告警信息远端错误,请检查后重试!" + +#task - runtime +ErrInstallExtension: "已有安装任务正在进行,请等待任务结束" \ No newline at end of file diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 5a3af039b..975b2ae9f 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -2707,8 +2707,8 @@ const message = { env: 'Environment', noenv: 'None', net: 'Network Connection', - laddr: 'Source address/port', - raddr: 'Destination address/port', + laddr: 'Local address/port', + raddr: 'Remote address/port', stopProcess: 'End', stopProcessWarn: 'Are you sure you want to end this process (PID:{0})? ', processName: 'Processname', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 60c223cf0..271dd5fed 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -2505,8 +2505,8 @@ const message = { env: '環境變量', noenv: '無', net: '網絡連接', - laddr: '源地址/端口', - raddr: '目標地址/端口', + laddr: '本地地址/端口', + raddr: '远程地址/端口', stopProcess: '結束', stopProcessWarn: '是否確定結束此進程 (PID:{0})?', processName: '進程名稱', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index fce7928d1..afd61a2c6 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -2497,8 +2497,8 @@ const message = { env: '环境变量', noenv: '无', net: '网络连接', - laddr: '源地址/端口', - raddr: '目标地址/端口', + laddr: '本地地址/端口', + raddr: '远程地址/端口', stopProcess: '结束', stopProcessWarn: '是否确定结束此进程 (PID:{0})?', processName: '进程名称', diff --git a/frontend/src/views/website/runtime/php/extension-management/index.vue b/frontend/src/views/website/runtime/php/extension-management/index.vue index 5b0e04890..5e38018c5 100644 --- a/frontend/src/views/website/runtime/php/extension-management/index.vue +++ b/frontend/src/views/website/runtime/php/extension-management/index.vue @@ -89,9 +89,10 @@ const installExtension = async (row: Runtime.SupportExtension) => { try { await InstallPHPExtension(req); taskLogRef.value.openWithTaskID(req.taskID); - + } catch (error) { + } finally { loading.value = false; - } catch (error) {} + } }); };