feat(app): delete parent dir after uninstall app (#8350)

This commit is contained in:
zhengkunwang 2025-04-08 17:21:16 +08:00 committed by GitHub
parent 00885c5c97
commit d67dfe2dfd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 34 additions and 11 deletions

View file

@ -112,7 +112,7 @@ func (t TaskRepo) CountExecutingTask() (int64, error) {
return count, err return count, err
} }
func (u TaskRepo) Delete(opts ...DBOption) error { func (t TaskRepo) Delete(opts ...DBOption) error {
db := global.TaskDB db := global.TaskDB
for _, opt := range opts { for _, opt := range opts {
db = opt(db) db = opt(db)
@ -120,6 +120,6 @@ func (u TaskRepo) Delete(opts ...DBOption) error {
return db.Delete(&model.Task{}).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 return global.TaskDB.Where("1 = 1").Delete(&model.Task{}).Error
} }

View file

@ -11,6 +11,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"path" "path"
"path/filepath"
"reflect" "reflect"
"regexp" "regexp"
"strconv" "strconv"
@ -428,6 +429,11 @@ func deleteAppInstall(deleteReq request.AppInstallDelete) error {
} }
} }
_ = op.DeleteDir(appDir) _ = op.DeleteDir(appDir)
parentDir := filepath.Dir(appDir)
entries, err := os.ReadDir(parentDir)
if err == nil && len(entries) == 0 {
_ = op.DeleteDir(parentDir)
}
tx.Commit() tx.Commit()
return nil return nil
} }

View file

@ -736,6 +736,9 @@ func (r *RuntimeService) InstallPHPExtension(req request.PHPExtensionInstallReq)
if err != nil { if err != nil {
return err 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) installTask, err := task.NewTaskWithOps(req.Name, task.TaskInstall, task.TaskScopeRuntimeExtension, req.TaskID, runtime.ID)
if err != nil { if err != nil {
return err return err

View file

@ -100,6 +100,16 @@ func CheckTaskIsExecuting(name string) error {
return nil 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) { func NewTask(name, operate, taskScope, taskID string, resourceID uint) (*Task, error) {
if taskID == "" { if taskID == "" {
taskID = uuid.New().String() taskID = uuid.New().String()

View file

@ -416,4 +416,7 @@ ErrAlert: "告警信息格式错误,请检查后重试!"
ErrAlertPush: "告警信息推送错误,请检查后重试!" ErrAlertPush: "告警信息推送错误,请检查后重试!"
ErrAlertSave: "告警信息保存错误,请检查后重试!" ErrAlertSave: "告警信息保存错误,请检查后重试!"
ErrAlertSync: "告警信息同步错误,请检查后重试!" ErrAlertSync: "告警信息同步错误,请检查后重试!"
ErrAlertRemote: "告警信息远端错误,请检查后重试!" ErrAlertRemote: "告警信息远端错误,请检查后重试!"
#task - runtime
ErrInstallExtension: "已有安装任务正在进行,请等待任务结束"

View file

@ -2707,8 +2707,8 @@ const message = {
env: 'Environment', env: 'Environment',
noenv: 'None', noenv: 'None',
net: 'Network Connection', net: 'Network Connection',
laddr: 'Source address/port', laddr: 'Local address/port',
raddr: 'Destination address/port', raddr: 'Remote address/port',
stopProcess: 'End', stopProcess: 'End',
stopProcessWarn: 'Are you sure you want to end this process (PID:{0})? ', stopProcessWarn: 'Are you sure you want to end this process (PID:{0})? ',
processName: 'Processname', processName: 'Processname',

View file

@ -2505,8 +2505,8 @@ const message = {
env: '環境變量', env: '環境變量',
noenv: '無', noenv: '無',
net: '網絡連接', net: '網絡連接',
laddr: '地址/端口', laddr: '本地地址/端口',
raddr: '目標地址/端口', raddr: '远程地址/端口',
stopProcess: '結束', stopProcess: '結束',
stopProcessWarn: '是否確定結束此進程 (PID:{0})', stopProcessWarn: '是否確定結束此進程 (PID:{0})',
processName: '進程名稱', processName: '進程名稱',

View file

@ -2497,8 +2497,8 @@ const message = {
env: '环境变量', env: '环境变量',
noenv: '无', noenv: '无',
net: '网络连接', net: '网络连接',
laddr: '地址/端口', laddr: '本地地址/端口',
raddr: '目标地址/端口', raddr: '远程地址/端口',
stopProcess: '结束', stopProcess: '结束',
stopProcessWarn: '是否确定结束此进程 (PID:{0})', stopProcessWarn: '是否确定结束此进程 (PID:{0})',
processName: '进程名称', processName: '进程名称',

View file

@ -89,9 +89,10 @@ const installExtension = async (row: Runtime.SupportExtension) => {
try { try {
await InstallPHPExtension(req); await InstallPHPExtension(req);
taskLogRef.value.openWithTaskID(req.taskID); taskLogRef.value.openWithTaskID(req.taskID);
} catch (error) {
} finally {
loading.value = false; loading.value = false;
} catch (error) {} }
}); });
}; };