From f109a758f8388a0499391f5a87ccd6d1e17db3aa Mon Sep 17 00:00:00 2001 From: Kirs Date: Tue, 23 Mar 2021 11:26:11 +0800 Subject: [PATCH] =?UTF-8?q?[Bug][PGSQL]=20Delete=20the=20stopped=20workflo?= =?UTF-8?q?w=20without=20deleting=20the=20correspon=E2=80=A6=20(#5066)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Bug][Api] Delete the stopped workflow without deleting the corresponding sub process, the workflow instance name is not displayed in the sub process * fix ut * fix ut err * sql style * fix error --- .../dao/mapper/TaskInstanceMapperTest.java | 43 +++++++++++-------- sql/dolphinscheduler_postgre.sql | 3 +- .../postgresql/dolphinscheduler_ddl.sql | 18 ++++++++ .../postgresql/dolphinscheduler_dml.sql | 16 +++++++ 4 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_ddl.sql create mode 100644 sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_dml.sql diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/TaskInstanceMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/TaskInstanceMapperTest.java index 4bef7f1b6..9ad8677b1 100644 --- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/TaskInstanceMapperTest.java +++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/TaskInstanceMapperTest.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.dao.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import org.apache.dolphinscheduler.common.enums.CommandType; import org.apache.dolphinscheduler.common.enums.ExecutionStatus; import org.apache.dolphinscheduler.common.enums.Flag; @@ -32,6 +33,7 @@ import java.util.Date; import java.util.List; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -43,7 +45,7 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @SpringBootTest @Transactional -@Rollback(true) +@Rollback public class TaskInstanceMapperTest { @@ -59,6 +61,17 @@ public class TaskInstanceMapperTest { @Autowired ProcessInstanceMapMapper processInstanceMapMapper; + private int processInstanceId; + + @Before + public void before() { + ProcessInstance processInstance = new ProcessInstance(); + processInstance.setWarningGroupId(0); + processInstance.setCommandParam(""); + processInstanceMapper.insert(processInstance); + processInstanceId = processInstance.getId(); + } + /** * insert * @@ -66,19 +79,13 @@ public class TaskInstanceMapperTest { */ private TaskInstance insertOne() { //insertOne - return insertOne("us task", 1, ExecutionStatus.RUNNING_EXECUTION, TaskType.SHELL.toString()); + return insertOne("us task", processInstanceId, ExecutionStatus.RUNNING_EXECUTION, TaskType.SHELL.toString(),1); } /** * construct a task instance and then insert - * - * @param taskName - * @param processInstanceId - * @param state - * @param taskType - * @return */ - private TaskInstance insertOne(String taskName, int processInstanceId, ExecutionStatus state, String taskType) { + private TaskInstance insertOne(String taskName, int processInstanceId, ExecutionStatus state, String taskType,int processDefinitionId) { TaskInstance taskInstance = new TaskInstance(); taskInstance.setFlag(Flag.YES); taskInstance.setName(taskName); @@ -88,6 +95,7 @@ public class TaskInstanceMapperTest { taskInstance.setTaskJson("{}"); taskInstance.setProcessInstanceId(processInstanceId); taskInstance.setTaskType(taskType); + taskInstance.setProcessDefinitionId(processDefinitionId); taskInstanceMapper.insert(taskInstance); return taskInstance; } @@ -96,7 +104,7 @@ public class TaskInstanceMapperTest { * test update */ @Test - public void testUpdate(){ + public void testUpdate() { //insertOne TaskInstance taskInstance = insertOne(); //update @@ -133,7 +141,7 @@ public class TaskInstanceMapperTest { @Test public void testQueryTaskByProcessIdAndState() { TaskInstance task = insertOne(); - task.setProcessInstanceId(110); + task.setProcessInstanceId(processInstanceId); taskInstanceMapper.updateById(task); List taskInstances = taskInstanceMapper.queryTaskByProcessIdAndState( task.getProcessInstanceId(), @@ -150,8 +158,8 @@ public class TaskInstanceMapperTest { public void testFindValidTaskListByProcessId() { TaskInstance task = insertOne(); TaskInstance task2 = insertOne(); - task.setProcessInstanceId(110); - task2.setProcessInstanceId(110); + task.setProcessInstanceId(processInstanceId); + task2.setProcessInstanceId(processInstanceId); taskInstanceMapper.updateById(task); taskInstanceMapper.updateById(task2); @@ -279,7 +287,6 @@ public class TaskInstanceMapperTest { */ @Test public void testQueryTaskInstanceListPaging() { - TaskInstance task = insertOne(); ProcessDefinition definition = new ProcessDefinition(); definition.setProjectId(1111); @@ -294,11 +301,9 @@ public class TaskInstanceMapperTest { processInstance.setCommandType(CommandType.START_PROCESS); processInstanceMapper.insert(processInstance); - task.setProcessDefinitionId(definition.getId()); - task.setProcessInstanceId(processInstance.getId()); - taskInstanceMapper.updateById(task); + TaskInstance task = insertOne("us task", processInstance.getId(), ExecutionStatus.RUNNING_EXECUTION, TaskType.SHELL.toString(),definition.getId()); - Page page = new Page(1,3); + Page page = new Page(1, 3); IPage taskInstanceIPage = taskInstanceMapper.queryTaskInstanceListPaging( page, definition.getProjectId(), @@ -309,7 +314,7 @@ public class TaskInstanceMapperTest { 0, new int[0], "", - null,null + null, null ); processInstanceMapper.deleteById(processInstance.getId()); taskInstanceMapper.deleteById(task.getId()); diff --git a/sql/dolphinscheduler_postgre.sql b/sql/dolphinscheduler_postgre.sql index 97b2e9428..a3853fb92 100644 --- a/sql/dolphinscheduler_postgre.sql +++ b/sql/dolphinscheduler_postgre.sql @@ -578,7 +578,8 @@ CREATE TABLE t_ds_task_instance ( first_submit_time timestamp DEFAULT NULL , delay_time int DEFAULT '0' , var_pool text , - PRIMARY KEY (id) + PRIMARY KEY (id), + CONSTRAINT foreign_key_instance_id FOREIGN KEY(process_instance_id) REFERENCES t_ds_process_instance(id) ON DELETE CASCADE ) ; -- diff --git a/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_ddl.sql b/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_ddl.sql new file mode 100644 index 000000000..752e68475 --- /dev/null +++ b/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_ddl.sql @@ -0,0 +1,18 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ +-- Add foreign key constraints for t_ds_task_instance -- +ALTER TABLE t_ds_task_instance ADD CONSTRAINT foreign_key_instance_id FOREIGN KEY(process_instance_id) REFERENCES t_ds_process_instance(id) ON DELETE CASCADE; \ No newline at end of file diff --git a/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_dml.sql b/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_dml.sql new file mode 100644 index 000000000..38964cc55 --- /dev/null +++ b/sql/upgrade/1.3.6_schema/postgresql/dolphinscheduler_dml.sql @@ -0,0 +1,16 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ \ No newline at end of file -- GitLab