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: {}",