This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git
The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
new 473c231e4 [Feature][Module Name]New Instance Condition Search in
Management Console (#3744)
473c231e4 is described below
commit 473c231e4a24c9add3c0a6b2bff109f81847302d
Author: huangKai-2323 <[email protected]>
AuthorDate: Mon Nov 14 12:08:08 2022 +0800
[Feature][Module Name]New Instance Condition Search in Management Console
(#3744)
---
.../linkis/jobhistory/dao/JobHistoryMapper.java | 9 +-
.../jobhistory/dao/impl/JobHistoryMapper.xml | 3 +
.../jobhistory/restful/api/QueryRestfulApi.java | 25 ++--
.../jobhistory/service/JobHistoryQueryService.java | 2 +-
.../service/impl/JobHistoryQueryServiceImpl.scala | 24 +++-
.../apache/linkis/jobhistory/util/QueryUtils.scala | 6 +
.../linkis/jobhistory/dao/JobDetailMapperTest.java | 129 ---------------------
.../jobhistory/dao/JobHistoryMapperTest.java | 6 +-
.../service/JobHistoryQueryServiceTest.java | 2 +-
9 files changed, 55 insertions(+), 151 deletions(-)
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
index 290e62fc0..65b37eeb1 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
@@ -47,7 +47,8 @@ public interface JobHistoryMapper {
@Param("startDate") Date startDate,
@Param("endDate") Date endDate,
@Param("engineType") String engineType,
- @Param("startId") Long startId);
+ @Param("startId") Long startId,
+ @Param("instances") String instances);
List<JobHistory> searchWithUserCreator(
@Param("id") Long id,
@@ -58,7 +59,8 @@ public interface JobHistoryMapper {
@Param("startDate") Date startDate,
@Param("endDate") Date endDate,
@Param("engineType") String engineType,
- @Param("startId") Long startId);
+ @Param("startId") Long startId,
+ @Param("instances") String instances);
List<JobHistory> searchWithCreatorOnly(
@Param("id") Long id,
@@ -69,7 +71,8 @@ public interface JobHistoryMapper {
@Param("startDate") Date startDate,
@Param("endDate") Date endDate,
@Param("engineType") String engineType,
- @Param("startId") Long startId);
+ @Param("startId") Long startId,
+ @Param("instances") String instances);
Integer countUndoneTaskNoCreator(
@Param("umUser") String username,
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
index 6eb48f122..3a76d8a76 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
@@ -89,6 +89,7 @@
<if test="startDate != null">and created_time >= #{startDate} AND
created_time <![CDATA[<=]]> #{endDate}</if>
<if test="status != null">and <foreach collection="status"
item="element" close=")" separator="," open="status in
(">#{element}</foreach></if>
<if test="startId != null">and id >= #{startId}</if>
+ <if test="instances != null">and instances = #{instances}</if>
</where>
ORDER BY linkis_ps_job_history_group_history.created_time DESC
</select>
@@ -117,6 +118,7 @@
and LOCATE(CONCAT('"', #{userCreatorKey}, '":"',
#{userCreatorValue}), labels) > 0
</if>
<if test="startId != null">and id >= #{startId}</if>
+ <if test="instances != null">and instances = #{instances}</if>
</where>
ORDER BY linkis_ps_job_history_group_history.created_time DESC
</select>
@@ -133,6 +135,7 @@
and labels like CONCAT('%"', #{userCreatorKey}, '":"%-',
#{creator}, '%')
</if>
<if test="startId != null">and id >= #{startId}</if>
+ <if test="instances != null">and instances = #{instances}</if>
</where>
ORDER BY linkis_ps_job_history_group_history.created_time DESC
</select>
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
index 791bd6418..1c0669e09 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
@@ -123,6 +123,7 @@ public class QueryRestfulApi {
@ApiImplicitParam(name = "creator", required = false, dataType =
"String", value = "creator"),
@ApiImplicitParam(name = "jobId", required = false, dataType =
"String", value = "job id"),
@ApiImplicitParam(name = "isAdminView", required = false, dataType =
"Boolean", value = "is admin view"),
+ @ApiImplicitParam(name = "instance", required = false, dataType =
"String", value = "instance"),
})
@RequestMapping(path = "/list", method = RequestMethod.GET)
public Message list(
@@ -137,8 +138,8 @@ public class QueryRestfulApi {
String executeApplicationName,
@RequestParam(value = "creator", required = false) String creator,
@RequestParam(value = "proxyUser", required = false) String
proxyUser,
- @RequestParam(value = "isAdminView", required = false) Boolean
isAdminView)
- throws IOException, QueryException {
+ @RequestParam(value = "isAdminView", required = false) Boolean
isAdminView,
+ @RequestParam(value = "instance", required = false) String
instance) throws IOException, QueryException {
String username = SecurityFilter.getLoginUsername(req);
if (StringUtils.isEmpty(status)) {
status = null;
@@ -172,10 +173,10 @@ public class QueryRestfulApi {
Date sDate = new Date(startDate);
Date eDate = new Date(endDate);
if (sDate.getTime() == eDate.getTime()) {
- Calendar instance = Calendar.getInstance();
- instance.setTimeInMillis(endDate);
- instance.add(Calendar.DAY_OF_MONTH, 1);
- eDate = new Date(instance.getTime().getTime()); // todo check
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(endDate);
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ eDate = new Date(calendar.getTime().getTime()); // todo check
}
if (isAdminView == null) {
isAdminView = false;
@@ -189,6 +190,13 @@ public class QueryRestfulApi {
}
}
}
+ if (StringUtils.isEmpty(instance)) {
+ instance = null;
+ }else{
+ if (!QueryUtils.checkNameValid(instance)) {
+ return Message.error("Invalid instances : " + instance);
+ }
+ }
List<JobHistory> queryTasks = null;
PageHelper.startPage(pageNow, pageSize);
try {
@@ -201,7 +209,8 @@ public class QueryRestfulApi {
sDate,
eDate,
executeApplicationName,
- null);
+ null,
+ instance);
} finally {
PageHelper.clearPage();
}
@@ -306,7 +315,7 @@ public class QueryRestfulApi {
sDate,
eDate,
engineType,
- queryCacheManager.getUndoneTaskMinId());
+ queryCacheManager.getUndoneTaskMinId(), null);
} finally {
PageHelper.clearPage();
}
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
index ff309ebaa..3c1b7a830 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
@@ -38,7 +38,7 @@ public interface JobHistoryQueryService {
JobHistory getJobHistoryByIdAndName(Long jobID, String userName);
- List<JobHistory> search(Long jobId, String username, String creator,
String status, Date sDate, Date eDate, String engineType, Long startJobId);
+ List<JobHistory> search(Long jobId, String username, String creator,
String status, Date sDate, Date eDate, String engineType, Long startJobId,
String instance);
Integer countUndoneTasks(String username, String creator, Date sDate, Date
eDate, String engineType, Long startJobId);
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
index 73e58b3ea..ef228c80c 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
@@ -254,19 +254,29 @@ class JobHistoryQueryServiceImpl extends
JobHistoryQueryService with Logging {
}
override def search(
- jobId: java.lang.Long,
+ jobId: lang.Long,
username: String,
status: String,
creator: String,
sDate: Date,
eDate: Date,
engineType: String,
- startJobId: java.lang.Long
+ startJobId: lang.Long,
+ instance: String
): util.List[JobHistory] = {
val split: util.List[String] = if (status != null)
status.split(",").toList.asJava else null
val result = if (StringUtils.isBlank(creator)) {
- jobHistoryMapper.search(jobId, username, split, sDate, eDate,
engineType, startJobId)
+ jobHistoryMapper.search(
+ jobId,
+ username,
+ split,
+ sDate,
+ eDate,
+ engineType,
+ startJobId,
+ instance
+ )
} else if (StringUtils.isBlank(username)) {
val fakeLabel = new UserCreatorLabel
jobHistoryMapper.searchWithCreatorOnly(
@@ -278,7 +288,8 @@ class JobHistoryQueryServiceImpl extends
JobHistoryQueryService with Logging {
sDate,
eDate,
engineType,
- startJobId
+ startJobId,
+ instance
)
} else {
val fakeLabel = new UserCreatorLabel
@@ -298,7 +309,8 @@ class JobHistoryQueryServiceImpl extends
JobHistoryQueryService with Logging {
sDate,
eDate,
engineType,
- startJobId
+ startJobId,
+ instance
)
}
result
@@ -320,7 +332,7 @@ class JobHistoryQueryServiceImpl extends
JobHistoryQueryService with Logging {
override def searchOne(jobId: lang.Long, sDate: Date, eDate: Date):
JobHistory = {
Iterables.getFirst(
- jobHistoryMapper.search(jobId, null, null, sDate, eDate, null, null), {
+ jobHistoryMapper.search(jobId, null, null, sDate, eDate, null, null,
null), {
val queryJobHistory = new QueryJobHistory
queryJobHistory.setId(jobId)
queryJobHistory.setStatus(TaskStatus.Inited.toString)
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
index 340b681bb..7ae3908a3 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
+++
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
@@ -50,7 +50,9 @@ object QueryUtils extends Logging {
private val CODE_SPLIT = ";"
private val LENGTH_SPLIT = "#"
private val NAME_REGEX = "^[a-zA-Z\\-\\d_\\.]+$"
+ private val INSTANCE_NAME_REGEX = "^[a-zA-Z\\-\\d_\\.:]+$"
private val nameRegexPattern = Pattern.compile(NAME_REGEX)
+ private val instanceNameRegexPattern = Pattern.compile(INSTANCE_NAME_REGEX)
private val dateFormatLocal = new ThreadLocal[SimpleDateFormat]() {
override protected def initialValue = new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss.SSS")
@@ -168,4 +170,8 @@ object QueryUtils extends Logging {
nameRegexPattern.matcher(param).find()
}
+ def checkInstanceNameValid(param: String): Boolean = {
+ instanceNameRegexPattern.matcher(param).find()
+ }
+
}
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
deleted file mode 100644
index d862c11f5..000000000
---
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.linkis.jobhistory.dao;
-
-import org.apache.linkis.jobhistory.entity.JobDetail;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.Date;
-import java.util.List;
-
-import org.h2.tools.Server;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.*;
-
-class JobDetailMapperTest extends BaseDaoTest {
-
- private static final Logger logger =
LoggerFactory.getLogger(JobDetailMapperTest.class);
-
- @Autowired JobDetailMapper jobDetailMapper;
-
- /**
- * User-created test data, if it is an auto-increment id, it should not be
assigned CURD should be
- * based on the data created by this method insert
- *
- * @return JobDetail
- */
- private JobDetail insertOne() {
- // insertOne
- JobDetail jobDetail = new JobDetail();
- jobDetail.setJobHistoryId(0L);
- jobDetail.setResultLocation("/test/location");
- jobDetail.setResultArraySize(2);
- jobDetail.setExecutionContent("excution content");
- jobDetail.setJobGroupInfo("test");
- jobDetail.setCreatedTime(new Date());
- jobDetail.setUpdatedTime(new Date());
- jobDetail.setStatus("success");
- jobDetail.setPriority(0);
-
- jobDetailMapper.insertJobDetail(jobDetail);
- return jobDetail;
- }
-
- @BeforeAll
- @DisplayName("Each unit test method is executed once before execution")
- protected static void beforeAll() throws Exception {
- // Start the console of h2 to facilitate viewing of h2 data
- Server.createWebServer("-web", "-webAllowOthers", "-webPort",
"8082").start();
- }
-
- @AfterAll
- @DisplayName("Each unit test method is executed once before execution")
- protected static void afterAll() throws Exception {}
-
- @Test
- void testSelectJobDetailByJobHistoryId() {
- JobDetail jobDetail = insertOne();
- List<JobDetail> result =
-
jobDetailMapper.selectJobDetailByJobHistoryId(jobDetail.getJobHistoryId());
- assertNotEquals(result.size(), 0);
- }
-
- @Test
- void testSelectJobDetailByJobDetailId() {
- JobDetail jobDetail = insertOne();
- JobDetail result =
jobDetailMapper.selectJobDetailByJobDetailId(jobDetail.getId());
- assertNotNull(result);
- }
-
- @Test
- void testInsertJobDetail() {
- JobDetail jobDetail = insertOne();
- assertTrue(jobDetail.getId() > 0);
- }
-
- @Test
- void testUpdateJobDetail() {
-
- JobDetail expectedJobDetail = insertOne();
- expectedJobDetail.setResultLocation("modify " +
expectedJobDetail.getResultLocation());
- expectedJobDetail.setResultArraySize(10);
- expectedJobDetail.setExecutionContent("modify " +
expectedJobDetail.getExecutionContent());
- expectedJobDetail.setJobGroupInfo("modify " +
expectedJobDetail.getJobGroupInfo());
- expectedJobDetail.setCreatedTime(new Date());
- expectedJobDetail.setUpdatedTime(new Date());
- expectedJobDetail.setStatus("modify " + expectedJobDetail.getStatus());
- expectedJobDetail.setPriority(1);
-
- jobDetailMapper.updateJobDetail(expectedJobDetail);
-
- JobDetail actualJobDetail =
-
jobDetailMapper.selectJobDetailByJobDetailId(expectedJobDetail.getId());
-
- // assertEquals(expectedJobDetail, actualJobDetail);
- //// assertThat(actual, samePropertyValuesAs(expected));
- // Determine whether the property values of the two objects are exactly
the same
-
assertThat(actualJobDetail).usingRecursiveComparison().isEqualTo(expectedJobDetail);
- }
-
- @Test
- void testSelectJobDetailStatusForUpdateByJobDetailId() {
- JobDetail jobDetail = insertOne();
- String result =
jobDetailMapper.selectJobDetailStatusForUpdateByJobDetailId(jobDetail.getId());
- assertNotNull(result);
- }
-}
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
index edf235864..7a9da1d10 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
+++
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
@@ -109,7 +109,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
List<String> status = new ArrayList<>();
status.add("Succeed");
List<JobHistory> histories =
- jobHistoryMapper.search(1L, "hadoop", status, null, null, "spark", 1L);
+ jobHistoryMapper.search(1L, "hadoop", status, null, null, "spark", 1L,
null);
Assertions.assertTrue(histories.size() > 0);
}
@@ -121,7 +121,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
status.add("Succeed");
List<JobHistory> histories =
jobHistoryMapper.searchWithUserCreator(
- 1L, "hadoop", null, null, status, null, null, "spark", 1L);
+ 1L, "hadoop", null, null, status, null, null, "spark", 1L, null);
Assertions.assertTrue(histories.size() > 0);
}
@@ -133,7 +133,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
status.add("Succeed");
List<JobHistory> histories =
jobHistoryMapper.searchWithCreatorOnly(
- 1L, "hadoop", null, "hadoop", status, null, null, "spark", 1L);
+ 1L, "hadoop", null, "hadoop", status, null, null, "spark", 1L,
null);
Assertions.assertTrue(histories.size() > 0);
}
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
index 810c30e85..576ffa6f5 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
+++
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
@@ -106,7 +106,7 @@ public class JobHistoryQueryServiceTest {
public void searchTest() {
List<JobHistory> histories =
jobRequestQueryService.search(
- 1L, "hadoop", "hadoop", "Succeed", new Date(), new Date(),
"spark", 1L);
+ 1L, "hadoop", "hadoop", "Succeed", new Date(), new Date(),
"spark", 1L, null);
Assertions.assertTrue(histories.size() == 0);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]