ソースを参照

修复删除 AppDeployConfig 时的 bug

reghao 1 年間 前
コミット
f250be3aaf

+ 30 - 10
mgr/src/main/java/cn/reghao/devops/mgr/mgr/app/service/impl/AppDeployServiceImpl.java

@@ -146,7 +146,20 @@ public class AppDeployServiceImpl implements AppDeployService {
         String appId = appDeployConfig.getAppConfig().getAppId();
         String machineId = appDeployConfig.getMachineHost().getMachineId();
         if (!isRunning(appId, machineId)) {
-            deployingRepository.deleteByAppConfig_AppId(appId);
+            AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
+            List<AppDeployingNode> deployingNodes = appDeploying.getDeployingNodes();
+            int index = getIndex(deployingNodes, machineId);
+            if (index != -1) {
+                deployingNodes.remove(index);
+            }
+
+            if (deployingNodes.size() == 0) {
+                deployingRepository.deleteByAppConfig_AppId(appId);
+            } else {
+                appDeploying.setDeployingNodes(deployingNodes);
+                deployingRepository.save(appDeploying);
+            }
+
             deployLogRepository.deleteByMachineHost_MachineId(machineId);
             deployConfigRepository.delete(appDeployConfig);
             return Result.result(ResultStatus.SUCCESS);
@@ -161,7 +174,8 @@ public class AppDeployServiceImpl implements AppDeployService {
             for (AppDeployingNode deployingNode : appDeploying.getDeployingNodes()) {
                 String machineId1 = deployingNode.getDeployConfig().getMachineHost().getMachineId();
                 if (machineId.equals(machineId1)) {
-                    return deployingNode.getRunning();
+                    int pid = deployingNode.getPid();
+                    return pid != -1;
                 }
             }
         }
@@ -214,14 +228,7 @@ public class AppDeployServiceImpl implements AppDeployService {
         if (appDeploying != null) {
             List<AppDeployingNode> deployingNodes = appDeploying.getDeployingNodes();
 
-            int idx = -1;
-            for (int i = 0; i < deployingNodes.size(); i++) {
-                String machineId1 = deployingNodes.get(i).getDeployConfig().getMachineHost().getMachineId();
-                if (machineId.equals(machineId1)) {
-                    idx = i;
-                }
-            }
-
+            int idx = getIndex(deployingNodes, machineId);
             if (idx != -1) {
                 deployingNodes.remove(idx);
                 deployLogRepository.deleteByMachineHost_MachineId(machineId);
@@ -230,6 +237,19 @@ public class AppDeployServiceImpl implements AppDeployService {
         }
     }
 
+    private int getIndex(List<AppDeployingNode> deployingNodes, String machineId) {
+        int idx = -1;
+        for (int i = 0; i < deployingNodes.size(); i++) {
+            String machineId1 = deployingNodes.get(i).getDeployConfig().getMachineHost().getMachineId();
+            if (machineId.equals(machineId1)) {
+                idx = i;
+                break;
+            }
+        }
+
+        return idx;
+    }
+
     @Override
     public void updateAfterBuild(AppBuilding appBuilding) {
         AppConfig appConfig = appBuilding.getAppConfig();