From c522295c562fa0da89447dec86849421cfe33ce0 Mon Sep 17 00:00:00 2001 From: CityFun <31820853+zhengkunwang223@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:46:21 +0800 Subject: [PATCH] fix: Resolve the issue of database uninstallation failure (#9361) --- agent/app/service/app_install.go | 12 ++++++++---- agent/app/service/app_utils.go | 30 +++++++++++++++++------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/agent/app/service/app_install.go b/agent/app/service/app_install.go index 823d4cb1b..ee0ee48dc 100644 --- a/agent/app/service/app_install.go +++ b/agent/app/service/app_install.go @@ -631,10 +631,14 @@ func (a *AppInstallService) DeleteCheck(installID uint) ([]dto.AppResource, erro resources, _ := appInstallResourceRepo.GetBy(appInstallResourceRepo.WithLinkId(appInstall.ID), repo.WithByFrom(constant.AppResourceLocal)) for _, resource := range resources { linkInstall, _ := appInstallRepo.GetFirst(repo.WithByID(resource.AppInstallId)) - res = append(res, dto.AppResource{ - Type: "app", - Name: linkInstall.Name, - }) + if linkInstall.ID > 0 { + res = append(res, dto.AppResource{ + Type: "app", + Name: linkInstall.Name, + }) + } else { + _ = appInstallResourceRepo.DeleteBy(context.Background(), appInstallResourceRepo.WithAppInstallId(resource.AppInstallId)) + } } return res, nil } diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index b33466b31..99a62f5f8 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -379,21 +379,25 @@ func deleteAppInstall(deleteReq request.AppInstallDelete) error { } resources, _ := appInstallResourceRepo.GetBy(appInstallResourceRepo.WithAppInstallId(install.ID)) - if deleteReq.DeleteDB && len(resources) > 0 { - del := dto.DelAppLink{ - Ctx: ctx, - Install: &install, - ForceDelete: deleteReq.ForceDelete, - Task: uninstallTask, - } - t.LogWithOps(task.TaskDelete, i18n.GetMsgByKey("Database")) - if err = deleteLink(del); err != nil { - t.LogFailedWithOps(task.TaskDelete, i18n.GetMsgByKey("Database"), err) - if !deleteReq.ForceDelete { - return err + if len(resources) > 0 { + if deleteReq.DeleteDB { + del := dto.DelAppLink{ + Ctx: ctx, + Install: &install, + ForceDelete: deleteReq.ForceDelete, + Task: uninstallTask, } + t.LogWithOps(task.TaskDelete, i18n.GetMsgByKey("Database")) + if err = deleteLink(del); err != nil { + t.LogFailedWithOps(task.TaskDelete, i18n.GetMsgByKey("Database"), err) + if !deleteReq.ForceDelete { + return err + } + } + t.LogSuccessWithOps(task.TaskDelete, i18n.GetMsgByKey("Database")) + } else { + _ = appInstallResourceRepo.DeleteBy(ctx, appInstallResourceRepo.WithAppInstallId(install.ID)) } - t.LogSuccessWithOps(task.TaskDelete, i18n.GetMsgByKey("Database")) } if DatabaseKeys[install.App.Key] > 0 {