You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by ki...@apache.org on 2022/09/06 14:26:44 UTC

[incubator-seatunnel] branch dev updated: [seatunnel-1947][seatunnel-server] add query log (#2614)

This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 7a5135b98 [seatunnel-1947][seatunnel-server] add query log (#2614)
7a5135b98 is described below

commit 7a5135b98f134a6d5ba926bf75f27dd754876f8b
Author: dijie <nj...@gmail.com>
AuthorDate: Tue Sep 6 22:26:37 2022 +0800

    [seatunnel-1947][seatunnel-server] add query log (#2614)
---
 .../seatunnel/app/controller/TaskController.java   |  7 ++++
 .../app/domain/request/task/InstanceLogRes.java}   | 16 +++++----
 .../apache/seatunnel/app/service/ITaskService.java |  3 ++
 .../app/service/impl/TaskServiceImpl.java          | 12 +++++++
 .../dolphinscheduler/IDolphinschedulerService.java |  3 ++
 .../constants/DolphinschedulerConstants.java       |  3 ++
 .../impl/DolphinschedulerServiceImpl.java          | 39 ++++++++++++----------
 .../dolphinscheduler/impl/InstanceServiceImpl.java |  6 ++++
 .../seatunnel/spi/scheduler/IInstanceService.java  |  3 ++
 .../spi/scheduler/dto/InstanceLogDto.java          |  5 +--
 10 files changed, 70 insertions(+), 27 deletions(-)

diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
index 68edd6052..2c63edd36 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
@@ -20,6 +20,7 @@ package org.apache.seatunnel.app.controller;
 import org.apache.seatunnel.app.common.Result;
 import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
 import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
+import org.apache.seatunnel.app.domain.request.task.InstanceLogRes;
 import org.apache.seatunnel.app.domain.request.task.JobListReq;
 import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
 import org.apache.seatunnel.app.domain.response.PageInfo;
@@ -71,6 +72,12 @@ public class TaskController {
         return Result.success(iTaskService.tmpExecute(req));
     }
 
+    @GetMapping("/queryInstanceLog")
+    @ApiOperation(value = "query instance log", httpMethod = "GET")
+    Result<InstanceLogRes> queryInstanceLog(@RequestParam long taskInstanceId) {
+        return Result.success(iTaskService.queryInstanceLog(taskInstanceId));
+    }
+
     @PostMapping("/kill")
     @ApiOperation(value = "kill running instance", httpMethod = "POST")
     Result<Void> kill(@RequestParam Long instanceId) {
diff --git a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceLogRes.java
similarity index 69%
copy from seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceLogRes.java
index f2ddc77f5..60d371b02 100644
--- a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceLogRes.java
@@ -15,16 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.seatunnel.spi.scheduler.dto;
+package org.apache.seatunnel.app.domain.request.task;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
 import lombok.Data;
 
-@Builder
 @Data
-public class InstanceLogDto {
+@ApiModel(value = "instanceLogRes", description = "instance log")
+@Builder
+public class InstanceLogRes {
+    @ApiModelProperty(value = "instance id", dataType = "long")
     private long instanceId;
-    private int lastSkipNum;
-    private int lastLimitNum;
-    private String content;
+
+    @ApiModelProperty(value = "instance id", dataType = "String")
+    private String logContent;
 }
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
index 78960c727..f959b88e6 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
@@ -20,6 +20,7 @@ package org.apache.seatunnel.app.service;
 import org.apache.seatunnel.app.domain.dto.job.PushScriptDto;
 import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
 import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
+import org.apache.seatunnel.app.domain.request.task.InstanceLogRes;
 import org.apache.seatunnel.app.domain.request.task.JobListReq;
 import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
 import org.apache.seatunnel.app.domain.response.PageInfo;
@@ -37,5 +38,7 @@ public interface ITaskService {
 
     InstanceSimpleInfoRes tmpExecute(ExecuteReq req);
 
+    InstanceLogRes queryInstanceLog(long instanceId);
+
     void kill(Long instanceId);
 }
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
index b12d8c2b7..9b25779b7 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
@@ -36,6 +36,7 @@ import org.apache.seatunnel.app.domain.dto.job.PushScriptDto;
 import org.apache.seatunnel.app.domain.dto.job.ScriptJobApplyDto;
 import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
 import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
+import org.apache.seatunnel.app.domain.request.task.InstanceLogRes;
 import org.apache.seatunnel.app.domain.request.task.JobListReq;
 import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
 import org.apache.seatunnel.app.domain.response.PageInfo;
@@ -49,6 +50,7 @@ import org.apache.seatunnel.spi.scheduler.IJobService;
 import org.apache.seatunnel.spi.scheduler.dto.ExecuteDto;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceListDto;
+import org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
 import org.apache.seatunnel.spi.scheduler.dto.JobDto;
 import org.apache.seatunnel.spi.scheduler.dto.JobListDto;
 import org.apache.seatunnel.spi.scheduler.dto.JobSimpleInfoDto;
@@ -224,6 +226,16 @@ public class TaskServiceImpl implements ITaskService {
         return this.translate(iJobService.execute(dto));
     }
 
+    @Override
+    public InstanceLogRes queryInstanceLog(long instanceId) {
+        final InstanceLogDto dto = iInstanceService.queryInstanceLog(instanceId);
+
+        return InstanceLogRes.builder()
+            .instanceId(instanceId)
+            .logContent(dto.getLogContent())
+            .build();
+    }
+
     @Override
     public void kill(Long instanceId) {
         iJobService.kill(instanceId);
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
index 8085a69ad..2320da9ad 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
@@ -26,6 +26,7 @@ import org.apache.seatunnel.scheduler.dolphinscheduler.dto.StartProcessDefinitio
 import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskInstanceDto;
 import org.apache.seatunnel.scheduler.dolphinscheduler.dto.UpdateProcessDefinitionDto;
 import org.apache.seatunnel.server.common.PageData;
+import org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
 import org.apache.seatunnel.spi.scheduler.dto.JobDto;
 
 import java.util.List;
@@ -58,5 +59,7 @@ public interface IDolphinschedulerService {
 
     void deleteProcessDefinition(long code);
 
+    InstanceLogDto queryInstanceLog(long instanceId);
+
     void killProcessInstance(long processInstanceId);
 }
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
index d6733a3b9..2c19d7571 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
@@ -170,6 +170,8 @@ public class DolphinschedulerConstants {
     public static final String DEPENDENT_MODE_DEFAULT = "OFF_MODE";
     public static final String PROCESS_INSTANCE_ID = "processInstanceId";
     public static final String EXECUTE_TYPE = "executeType";
+    public static final int LOG_SKIP_LINE_NUM_DEFAULT = 0;
+    public static final int LOG_LIMIT_NUM_DEFAULT = Integer.MAX_VALUE;
 
     /**
      * response param
@@ -180,4 +182,5 @@ public class DolphinschedulerConstants {
     public static final String CODE = "code";
     public static final int CODE_SUCCESS = 0;
     public static final String MSG = "msg";
+    public static final String LOG_MESSAGE = "message";
 }
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
index d4de2383f..9c07fe8a2 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
@@ -51,7 +51,10 @@ import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.Dolphins
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOCATIONS_Y_DEFAULT;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_DETAIL;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_LIMIT_NUM;
+import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_LIMIT_NUM_DEFAULT;
+import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_MESSAGE;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_SKIP_LINE_NUM;
+import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.LOG_SKIP_LINE_NUM_DEFAULT;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.MSG;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.ONLINE_CREATE_RESOURCE;
 import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.PAGE_NO;
@@ -451,6 +454,25 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
         execute(processInstanceId, ExecuteTypeEnum.STOP);
     }
 
+    @Override
+    public InstanceLogDto queryInstanceLog(long instanceId) {
+
+        final Map result = HttpUtils.builder()
+            .withUrl(apiPrefix.concat(LOG_DETAIL))
+            .withData(createParamMap(TASK_INSTANCE_ID, instanceId, LOG_SKIP_LINE_NUM, LOG_SKIP_LINE_NUM_DEFAULT, LOG_LIMIT_NUM, LOG_LIMIT_NUM_DEFAULT))
+            .withMethod(Connection.Method.GET)
+            .withToken(TOKEN, token)
+            .execute(Map.class);
+        checkResult(result, false);
+
+        final Map map = MapUtils.getMap(result, DATA);
+        final String logContent = MapUtils.getString(map, LOG_MESSAGE);
+
+        return InstanceLogDto.builder()
+            .logContent(logContent)
+            .build();
+    }
+
     private ProjectDto queryProjectCodeByName(String projectName) throws IOException {
         final Map result = HttpUtils.builder()
                 .withUrl(apiPrefix.concat(QUERY_PROJECT_LIST_PAGING))
@@ -599,23 +621,6 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
         return this.mapToPojo(map, ResourceDto.class);
     }
 
-    public InstanceLogDto getInstanceLog(long instanceId, int skipNum, int limitNum) {
-        final Map result = HttpUtils.builder()
-                .withUrl(apiPrefix.concat(LOG_DETAIL))
-                .withMethod(Connection.Method.GET)
-                .withData(createParamMap(TASK_INSTANCE_ID, instanceId, LOG_SKIP_LINE_NUM, skipNum, LOG_LIMIT_NUM, limitNum))
-                .withToken(TOKEN, token)
-                .execute(Map.class);
-        checkResult(result, false);
-        final String logContent = MapUtils.getString(result, DATA);
-        return InstanceLogDto.builder()
-                .lastSkipNum(skipNum)
-                .lastLimitNum(limitNum)
-                .instanceId(instanceId)
-                .content(logContent)
-                .build();
-    }
-
     private int checkResult(Map result, boolean ignore) {
         final int intValue = MapUtils.getIntValue(result, CODE, -1);
         if (!ignore && CODE_SUCCESS != intValue) {
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
index ff295d8dd..95639809f 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
@@ -24,6 +24,7 @@ import org.apache.seatunnel.server.common.PageData;
 import org.apache.seatunnel.spi.scheduler.IInstanceService;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceListDto;
+import org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -64,4 +65,9 @@ public class InstanceServiceImpl implements IInstanceService {
                 .build()).collect(Collectors.toList());
         return new PageData<>(instancePageData.getTotalCount(), data);
     }
+
+    @Override
+    public InstanceLogDto queryInstanceLog(long instanceId) {
+        return iDolphinschedulerService.queryInstanceLog(instanceId);
+    }
 }
diff --git a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
index ab7f6ddc3..dad0ee4e9 100644
--- a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
+++ b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
@@ -20,7 +20,10 @@ package org.apache.seatunnel.spi.scheduler;
 import org.apache.seatunnel.server.common.PageData;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceListDto;
+import org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
 
 public interface IInstanceService {
     PageData<InstanceDto> list(InstanceListDto dto);
+
+    InstanceLogDto queryInstanceLog(long instanceId);
 }
diff --git a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java
index f2ddc77f5..9a16b112b 100644
--- a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java
+++ b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceLogDto.java
@@ -23,8 +23,5 @@ import lombok.Data;
 @Builder
 @Data
 public class InstanceLogDto {
-    private long instanceId;
-    private int lastSkipNum;
-    private int lastLimitNum;
-    private String content;
+    private String logContent;
 }