This is an automated email from the ASF dual-hosted git repository.

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new b3a40d882f [Fix-17575][Workflow] Add a check for duplicate task names 
when saving or updating a workflow (#17576)
b3a40d882f is described below

commit b3a40d882f28bbaa2bae3755d6203c2ff0048cc0
Author: njnu-seafish <[email protected]>
AuthorDate: Wed Oct 15 09:53:23 2025 +0800

    [Fix-17575][Workflow] Add a check for duplicate task names when saving or 
updating a workflow (#17576)
---
 .../java/org/apache/dolphinscheduler/api/enums/Status.java     |  1 +
 .../api/service/impl/WorkflowDefinitionServiceImpl.java        | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 8e129f9436..4454a62825 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -248,6 +248,7 @@ public enum Status {
     TASK_WITH_DEPENDENT_ERROR(10195, "task used in other tasks", "删除被其他任务引用"),
     TASK_SAVEPOINT_ERROR(10196, "task savepoint error", "任务实例savepoint错误"),
     TASK_STOP_ERROR(10197, "task stop error", "任务实例停止错误"),
+    TASK_NAME_DUPLICATE_ERROR(10198, "task name {0} duplicate error", 
"同一个工作流中任务名称 {0} 重复"),
     LIST_TASK_TYPE_ERROR(10200, "list task type error", "查询任务类型列表错误"),
     DELETE_TASK_TYPE_ERROR(10200, "delete task type error", "删除任务类型错误"),
     ADD_TASK_TYPE_ERROR(10200, "add task type error", "添加任务类型错误"),
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
index 6d9678d06d..7fe3d00a51 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
@@ -459,12 +459,22 @@ public class WorkflowDefinitionServiceImpl extends 
BaseServiceImpl implements Wo
     private List<TaskDefinitionLog> generateTaskDefinitionList(String 
taskDefinitionJson) {
         try {
             List<TaskDefinitionLog> taskDefinitionLogs = 
JSONUtils.toList(taskDefinitionJson, TaskDefinitionLog.class);
+
             if (CollectionUtils.isEmpty(taskDefinitionLogs)) {
                 log.error("Generate task definition list failed, the given 
taskDefinitionJson is invalided: {}",
                         taskDefinitionJson);
                 throw new ServiceException(Status.DATA_IS_NOT_VALID, 
taskDefinitionJson);
             }
+
+            Set<String> taskNameSet = new HashSet<>();
             for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs) {
+                if (!taskNameSet.add(taskDefinitionLog.getName())) {
+                    log.error(
+                            "Generate task definition list failed, the given 
task definition name is duplicate, taskName: {}, taskDefinition: {}",
+                            taskDefinitionLog.getName(), taskDefinitionLog);
+                    throw new 
ServiceException(Status.TASK_NAME_DUPLICATE_ERROR, taskDefinitionLog.getName());
+                }
+
                 if (!checkTaskParameters(taskDefinitionLog.getTaskType(), 
taskDefinitionLog.getTaskParams())) {
                     log.error(
                             "Generate task definition list failed, the given 
task definition parameter is invalided, taskName: {}, taskDefinition: {}",

Reply via email to