From 3d7464399c50897dded9829fd1d5c59661e22a2a Mon Sep 17 00:00:00 2001 From: Mohammad Arshad Date: Wed, 4 Sep 2024 20:25:19 +0530 Subject: [PATCH 1/2] [Bug][Seatunnel-web] Task instance filter is not working as expected --- pom.xml | 2 +- .../app/dal/dao/IJobInstanceDao.java | 2 +- .../app/dal/dao/impl/JobInstanceDaoImpl.java | 4 +-- .../app/dal/mapper/JobInstanceMapper.java | 2 +- .../service/impl/TaskInstanceServiceImpl.java | 26 +++++-------------- .../app/dal/mapper/JobInstanceMapper.xml | 4 +-- .../TaskInstanceControllerWrapper.java | 7 +++-- .../app/test/TaskInstanceControllerTest.java | 20 +++++++++++--- tools/dependencies/known-dependencies.txt | 4 +-- 9 files changed, 35 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index e0df3bf20..e784d6688 100644 --- a/pom.xml +++ b/pom.xml @@ -105,7 +105,7 @@ 3.1.4 1.11.271 2.29.0 - 1.5.7 + 1.2.3 2.17.1 1.2 1.2.17 diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IJobInstanceDao.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IJobInstanceDao.java index ad0db611f..d52951cf7 100644 --- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IJobInstanceDao.java +++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IJobInstanceDao.java @@ -43,7 +43,7 @@ IPage queryJobInstanceListPaging( IPage page, Date startTime, Date endTime, - Long jobDefineId, + String jobDefineId, String jobMode); List getAllJobInstance(@NonNull List jobInstanceIdList); diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/JobInstanceDaoImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/JobInstanceDaoImpl.java index c296a6350..5600dd4dd 100644 --- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/JobInstanceDaoImpl.java +++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/JobInstanceDaoImpl.java @@ -70,11 +70,11 @@ public IPage queryJobInstanceListPaging( IPage page, Date startTime, Date endTime, - Long jobDefineId, + String jobDefineName, String jobMode) { IPage jobInstanceIPage = jobInstanceMapper.queryJobInstanceListPaging( - page, startTime, endTime, jobDefineId, jobMode); + page, startTime, endTime, jobDefineName, jobMode); return jobInstanceIPage; } diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.java index 53b60a403..b168995cc 100644 --- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.java +++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.java @@ -35,7 +35,7 @@ IPage queryJobInstanceListPaging( IPage page, @Param("startTime") Date startTime, @Param("endTime") Date endTime, - @Param("jobDefineId") Long jobDefineId, + @Param("jobDefineName") String jobDefineName, @Param("jobMode") String jobMode); JobInstance getJobExecutionStatus(@Param("jobInstanceId") Long jobInstanceId); diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskInstanceServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskInstanceServiceImpl.java index 1e17ebaa3..05bc071c7 100644 --- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskInstanceServiceImpl.java +++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskInstanceServiceImpl.java @@ -76,12 +76,6 @@ public Result> getSyncTaskInstancePaging( String syncTaskType, Integer pageNo, Integer pageSize) { - JobDefinition jobDefinition = null; - IPage jobInstanceIPage; - if (jobDefineName != null) { - jobDefinition = jobDefinitionDao.getJobByName(jobDefineName); - } - Result> result = new Result<>(); PageInfo pageInfo = new PageInfo<>(pageNo, pageSize); result.setData(pageInfo); @@ -90,19 +84,13 @@ public Result> getSyncTaskInstancePaging( Date startDate = dateConverter(startTime); Date endDate = dateConverter(endTime); - if (jobDefinition != null) { - jobInstanceIPage = - jobInstanceDao.queryJobInstanceListPaging( - new Page<>(pageNo, pageSize), - startDate, - endDate, - jobDefinition.getId(), - syncTaskType); - } else { - jobInstanceIPage = - jobInstanceDao.queryJobInstanceListPaging( - new Page<>(pageNo, pageSize), startDate, endDate, null, syncTaskType); - } + IPage jobInstanceIPage = + jobInstanceDao.queryJobInstanceListPaging( + new Page<>(pageNo, pageSize), + startDate, + endDate, + jobDefineName, + syncTaskType); List records = jobInstanceIPage.getRecords(); if (CollectionUtils.isEmpty(records)) { diff --git a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.xml b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.xml index 55c440375..3862c7982 100644 --- a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.xml +++ b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/JobInstanceMapper.xml @@ -44,8 +44,8 @@ AND (end_time #{endTime} or end_time is null) - - AND job_define_id = #{jobDefineId} + + AND job_define_id in (select x.id from t_st_job_definition x where x.name LIKE concat('%', #{jobDefineName}, '%')) AND job_type = #{jobMode} diff --git a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java index 41cece132..7285c8b69 100644 --- a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java +++ b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java @@ -28,8 +28,8 @@ import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; public class TaskInstanceControllerWrapper extends SeatunnelWebTestingBase { @@ -68,7 +68,7 @@ public Result> getTaskInstanceList( response, new TypeReference>>() {}); } - public SeaTunnelJobInstanceDto getTaskInstanceList(String jobDefineName) { + public List getTaskInstanceList(String jobDefineName) { String startTime = URLEncoder.encode( dateFormat.format( @@ -94,7 +94,6 @@ public SeaTunnelJobInstanceDto getTaskInstanceList(String jobDefineName) { if (result.getData().getTotalList().isEmpty()) { return null; } - assertEquals(1, result.getData().getTotalList().size()); - return result.getData().getTotalList().get(0); + return result.getData().getTotalList(); } } diff --git a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/test/TaskInstanceControllerTest.java b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/test/TaskInstanceControllerTest.java index c227fc7d8..485e07cc2 100644 --- a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/test/TaskInstanceControllerTest.java +++ b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/test/TaskInstanceControllerTest.java @@ -34,6 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; public class TaskInstanceControllerTest extends SeatunnelWebTestingBase { @@ -53,6 +54,21 @@ public static void setUp() { @Test public void getTaskInstanceList_shouldReturnData_whenValidRequest() { String jobName = "getTaskInstance" + uniqueId; + extractedJob1(jobName); + String jobName2 = "getTaskInstance" + uniqueId + "_2"; + extractedJob1(jobName2); + + List taskInstanceList = + taskInstanceControllerWrapper.getTaskInstanceList(jobName); + assertNotNull(taskInstanceList); + assertEquals(2, taskInstanceList.size()); + + taskInstanceList = + taskInstanceControllerWrapper.getTaskInstanceList("name_which_matches_no_job"); + assertNull(taskInstanceList); + } + + private static void extractedJob1(String jobName) { long jobVersionId = JobTestingUtils.createJob(jobName); Result execuitonResult = jobExecutorControllerWrapper.jobExecutor(jobVersionId); assertTrue(execuitonResult.isSuccess()); @@ -60,10 +76,6 @@ public void getTaskInstanceList_shouldReturnData_whenValidRequest() { JobTestingUtils.waitForJobCompletion(execuitonResult.getData()); assertEquals(1, listResult.getData().size()); assertEquals("FINISHED", listResult.getData().get(0).getStatus()); - - SeaTunnelJobInstanceDto taskInstanceList = - taskInstanceControllerWrapper.getTaskInstanceList(jobName); - assertNotNull(taskInstanceList); } @AfterAll diff --git a/tools/dependencies/known-dependencies.txt b/tools/dependencies/known-dependencies.txt index 28e6b0b2b..c6a0d02f9 100644 --- a/tools/dependencies/known-dependencies.txt +++ b/tools/dependencies/known-dependencies.txt @@ -106,8 +106,8 @@ jcommander-1.81.jar log4j-api-2.17.1.jar log4j-over-slf4j-1.7.36.jar log4j-to-slf4j-2.17.1.jar -logback-classic-1.5.7.jar -logback-core-1.5.7.jar +logback-classic-1.2.3.jar +logback-core-1.2.3.jar protostuff-api-1.8.0.jar protostuff-collectionschema-1.8.0.jar protostuff-core-1.8.0.jar From b3c2a903db826513469979a29915482f01835d64 Mon Sep 17 00:00:00 2001 From: Mohammad Arshad Date: Wed, 4 Sep 2024 23:31:34 +0530 Subject: [PATCH 2/2] Changed /seatunnel/api/v1/task/metrics parameter from jobDefineName to taskName as taskName is referred everywhere in UI. --- .../seatunnel/app/controller/TaskInstanceController.java | 2 +- .../app/controller/TaskInstanceControllerWrapper.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskInstanceController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskInstanceController.java index cdcd35a2f..f459c2d49 100644 --- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskInstanceController.java +++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskInstanceController.java @@ -41,7 +41,7 @@ public class TaskInstanceController { @ApiOperation(value = "get the jobMetrics list ", httpMethod = "GET") public Result> getTaskInstanceList( @RequestAttribute(name = "userId") Integer userId, - @RequestParam(name = "jobDefineName", required = false) String jobDefineName, + @RequestParam(name = "taskName", required = false) String jobDefineName, @RequestParam(name = "executorName", required = false) String executorName, @RequestParam(name = "stateType", required = false) String stateType, @RequestParam(name = "startDate", required = false) String startTime, diff --git a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java index 7285c8b69..d07a06a54 100644 --- a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java +++ b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java @@ -37,7 +37,7 @@ public class TaskInstanceControllerWrapper extends SeatunnelWebTestingBase { private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public Result> getTaskInstanceList( - String jobDefineName, + String taskName, String executorName, String stateType, String startTime, @@ -48,8 +48,8 @@ public Result> getTaskInstanceList( String response = sendRequest( urlWithParam( - "task/jobMetrics?jobDefineName=" - + jobDefineName + "task/jobMetrics?taskName=" + + taskName + "&executorName=" + executorName + "&stateType="