martin 2 жил өмнө
parent
commit
ebfae72d4e

+ 10 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/pojo/to/KubernetesNodeTO.java

@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class KubernetesNodeTO {
+public class KubernetesNodeTO implements Cloneable{
     private String name;
     private Integer maxParallelism;
     private String hostname;
@@ -17,4 +17,13 @@ public class KubernetesNodeTO {
     private String password;
 
 
+    @Override
+    public KubernetesNodeTO clone() {
+        try {
+            // TODO: copy mutable state here, so the clone can't change the internals of the original
+            return (KubernetesNodeTO) super.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new AssertionError();
+        }
+    }
 }

+ 7 - 6
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -147,10 +147,11 @@ public class ProjectUtil {
         log.info("ProjectUtil--getNodeMapToUse 预设并行度的节点列表为:" + initialNodeList);
         // 遍历所有节点,获取还有剩余并行度的节点
         List<KubernetesNodeTO> restNodeList = new ArrayList<>();    // 剩余并行度的节点列表
-        for (KubernetesNodeTO kubernetesNodeTO : initialNodeList) {
-            String nodeName = kubernetesNodeTO.getName();   // 节点名称
+        for (KubernetesNodeTO kubernetesNodeSource : initialNodeList) {
+            KubernetesNodeTO kubernetesNodeCopy = kubernetesNodeSource.clone();
+            String nodeName = kubernetesNodeCopy.getName();   // 节点名称
             String restParallelismKey = "node:" + nodeName + ":parallelism";   // 获取节点剩余并行度的 key
-            int maxParallelism = kubernetesNodeTO.getMaxParallelism();
+            int maxParallelism = kubernetesNodeCopy.getMaxParallelism();
             String restParallelismString = stringRedisTemplate.opsForValue().get(restParallelismKey);
             // -------------------------------- Comment --------------------------------
             int restParallelism;
@@ -159,13 +160,13 @@ public class ProjectUtil {
                 stringRedisTemplate.opsForValue().set(restParallelismKey, restParallelism + "");
             } else {
                 restParallelism = Integer.parseInt(restParallelismString);
-                kubernetesNodeTO.setMaxParallelism(restParallelism);
+                kubernetesNodeCopy.setMaxParallelism(restParallelism);
             }
             if (restParallelism > 0) {
-                restNodeList.add(kubernetesNodeTO);
+                restNodeList.add(kubernetesNodeCopy);
             }
         }
-        log.info("ProjectUtil--getNodeMapToUse 剩余并行度的节点列表为:" + initialNodeList);
+        log.info("ProjectUtil--getNodeMapToUse 剩余并行度的节点列表为:" + restNodeList);
         Map<String, Integer> resultNodeMap = new HashMap<>();    // 用于执行的节点映射(节点名,并行度)
         if (!CollectionUtil.isEmpty(restNodeList)) {
             for (int i = 0; i < parallelism; i++) {