This is an automated email from the ASF dual-hosted git repository.
chufenggao 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 c0435e5bd8 fix dependent task logic (#15795)
c0435e5bd8 is described below
commit c0435e5bd88ab8712942cfecf9e1fefa0d886773
Author: Evan Sun <[email protected]>
AuthorDate: Wed Apr 3 13:56:41 2024 +0800
fix dependent task logic (#15795)
Co-authored-by: abzymeinsjtu <[email protected]>
---
.../dolphinscheduler/dao/mapper/ProcessInstanceMapper.java | 6 ++++--
.../dolphinscheduler/dao/repository/ProcessInstanceDao.java | 6 ++++--
.../dao/repository/impl/ProcessInstanceDaoImpl.java | 10 +++++++---
.../dolphinscheduler/dao/mapper/ProcessInstanceMapper.xml | 9 +++++++--
.../dolphinscheduler/dao/mapper/ProcessInstanceMapperTest.java | 3 ++-
.../dolphinscheduler/server/master/utils/DependentExecute.java | 2 +-
6 files changed, 25 insertions(+), 11 deletions(-)
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.java
index 20c259da9b..943b4ac2db 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.java
@@ -188,13 +188,15 @@ public interface ProcessInstanceMapper extends
BaseMapper<ProcessInstance> {
/**
* query last scheduler process instance
*
- * @param definitionCode definitionCode
+ * @param processDefinitionCode definitionCode
+ * @param taskDefinitionCode definitionCode
* @param startTime startTime
* @param endTime endTime
* @param testFlag testFlag
* @return process instance
*/
- ProcessInstance queryLastSchedulerProcess(@Param("processDefinitionCode")
Long definitionCode,
+ ProcessInstance queryLastSchedulerProcess(@Param("processDefinitionCode")
Long processDefinitionCode,
+ @Param("taskDefinitionCode")
Long taskDefinitionCode,
@Param("startTime") Date
startTime,
@Param("endTime") Date endTime,
@Param("testFlag") int testFlag);
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
index 02703fe0f3..91c567e2e3 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
@@ -41,11 +41,13 @@ public interface ProcessInstanceDao extends
IDao<ProcessInstance> {
/**
* find last scheduler process instance in the date interval
*
- * @param definitionCode definitionCode
+ * @param processDefinitionCode definitionCode
+ * @param taskDefinitionCode definitionCode
* @param dateInterval dateInterval
* @return process instance
*/
- ProcessInstance queryLastSchedulerProcessInterval(Long definitionCode,
DateInterval dateInterval, int testFlag);
+ ProcessInstance queryLastSchedulerProcessInterval(Long
processDefinitionCode, Long taskDefinitionCode,
+ DateInterval
dateInterval, int testFlag);
/**
* find last manual process instance interval
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
index 8ff93b3a9f..8e966c1850 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
@@ -67,14 +67,18 @@ public class ProcessInstanceDaoImpl extends
BaseDao<ProcessInstance, ProcessInst
/**
* find last scheduler process instance in the date interval
*
- * @param definitionCode definitionCode
+ * @param processDefinitionCode definitionCode
+ * @param taskDefinitionCode definitionCode
* @param dateInterval dateInterval
* @return process instance
*/
@Override
- public ProcessInstance queryLastSchedulerProcessInterval(Long
definitionCode, DateInterval dateInterval,
+ public ProcessInstance queryLastSchedulerProcessInterval(Long
processDefinitionCode, Long taskDefinitionCode,
+ DateInterval
dateInterval,
int testFlag) {
- return mybatisMapper.queryLastSchedulerProcess(definitionCode,
+ return mybatisMapper.queryLastSchedulerProcess(
+ processDefinitionCode,
+ taskDefinitionCode,
dateInterval.getStartTime(),
dateInterval.getEndTime(),
testFlag);
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.xml
index 095e266ed5..b31bb571d7 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapper.xml
@@ -197,12 +197,17 @@
order by start_time desc limit #{size}
</select>
<select id="queryLastSchedulerProcess"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessInstance">
- select
+ select t1.* from (select
<include refid="baseSql"/>
from t_ds_process_instance
where process_definition_code=#{processDefinitionCode} and
test_flag=#{testFlag}
- <if test="startTime!=null and endTime != null ">
+ <if test="startTime != null and endTime != null ">
and schedule_time <![CDATA[ >= ]]> #{startTime} and schedule_time
<![CDATA[ <= ]]> #{endTime}
+ </if>) as t1
+ <if test="taskDefinitionCode != null and taskDefinitionCode != 0 and
taskDefinitionCode != -1">
+ inner join
+ t_ds_task_instance as t2
+ on t1.id = t2.process_instance_id and
t2.task_code=#{taskDefinitionCode}
</if>
order by end_time desc limit 1
</select>
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapperTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapperTest.java
index 39b8d04e4d..0aae0dce2b 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapperTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapperTest.java
@@ -263,7 +263,8 @@ public class ProcessInstanceMapperTest extends BaseDaoTest {
processInstanceMapper.updateById(processInstance);
ProcessInstance processInstance1 =
-
processInstanceMapper.queryLastSchedulerProcess(processInstance.getProcessDefinitionCode(),
null, null,
+
processInstanceMapper.queryLastSchedulerProcess(processInstance.getProcessDefinitionCode(),
0L, null,
+ null,
processInstance.getTestFlag());
Assertions.assertNotEquals(null, processInstance1);
processInstanceMapper.deleteById(processInstance.getId());
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java
index 15ab34de34..28f9fd682b 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java
@@ -320,7 +320,7 @@ public class DependentExecute {
int testFlag) {
ProcessInstance lastSchedulerProcess =
-
processInstanceDao.queryLastSchedulerProcessInterval(definitionCode,
dateInterval, testFlag);
+
processInstanceDao.queryLastSchedulerProcessInterval(definitionCode, taskCode,
dateInterval, testFlag);
ProcessInstance lastManualProcess =
processInstanceDao.queryLastManualProcessInterval(definitionCode, taskCode,
dateInterval, testFlag);