From 994de4c9027f02b713bc3b03daad965bc01a25e1 Mon Sep 17 00:00:00 2001 From: caishunfeng Date: Mon, 28 Mar 2022 11:36:56 +0800 Subject: [PATCH] [Bug-9045][Server] improve log detail error if task instance host is null (#9205) * improve log detail error if task instance host is null * test Co-authored-by: caishunfeng <534328519@qq.com> --- .../dolphinscheduler/api/enums/Status.java | 49 +++++++++---------- .../api/service/impl/LoggerServiceImpl.java | 5 +- .../api/service/LoggerServiceTest.java | 2 +- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java index 52591e9be1..81802d5f9f 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java @@ -17,11 +17,11 @@ package org.apache.dolphinscheduler.api.enums; -import org.springframework.context.i18n.LocaleContextHolder; - import java.util.Locale; import java.util.Optional; +import org.springframework.context.i18n.LocaleContextHolder; + /** * status enum // todo #4855 One category one interval */ @@ -215,6 +215,7 @@ public enum Status { REVOKE_PROJECT_ERROR(10182, "revoke project error", "撤销项目授权错误"), QUERY_AUTHORIZED_USER(10183, "query authorized user error", "查询拥有项目权限的用户错误"), PROJECT_NOT_EXIST(10190, "This project was not found. Please refresh page.", "该项目不存在,请刷新页面"), + TASK_INSTANCE_HOST_IS_NULL(10191, "task instance host is null", "任务实例host为空"), UDF_FUNCTION_NOT_EXIST(20001, "UDF function not found", "UDF函数不存在"), UDF_FUNCTION_EXISTS(20002, "UDF function already exists", "UDF函数已存在"), @@ -338,12 +339,12 @@ public enum Status { LIST_PAGING_ALERT_PLUGIN_INSTANCE_ERROR(110011, "query plugin instance page error", "分页查询告警实例失败"), DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED(110012, "failed to delete the alert instance, there is an alarm group associated with this alert instance", "删除告警实例失败,存在与此告警实例关联的警报组"), - PROCESS_DEFINITION_VERSION_IS_USED(110013,"this process definition version is used","此工作流定义版本被使用"), + PROCESS_DEFINITION_VERSION_IS_USED(110013, "this process definition version is used", "此工作流定义版本被使用"), CREATE_ENVIRONMENT_ERROR(120001, "create environment error", "创建环境失败"), - ENVIRONMENT_NAME_EXISTS(120002,"this environment name [{0}] already exists","环境名称[{0}]已经存在"), - ENVIRONMENT_NAME_IS_NULL(120003,"this environment name shouldn't be empty.","环境名称不能为空"), - ENVIRONMENT_CONFIG_IS_NULL(120004,"this environment config shouldn't be empty.","环境配置信息不能为空"), + ENVIRONMENT_NAME_EXISTS(120002, "this environment name [{0}] already exists", "环境名称[{0}]已经存在"), + ENVIRONMENT_NAME_IS_NULL(120003, "this environment name shouldn't be empty.", "环境名称不能为空"), + ENVIRONMENT_CONFIG_IS_NULL(120004, "this environment config shouldn't be empty.", "环境配置信息不能为空"), UPDATE_ENVIRONMENT_ERROR(120005, "update environment [{0}] info error", "更新环境[{0}]信息失败"), DELETE_ENVIRONMENT_ERROR(120006, "delete environment error", "删除环境信息失败"), DELETE_ENVIRONMENT_RELATED_TASK_EXISTS(120007, "this environment has been used in tasks,so you can't delete it.", "该环境已经被任务使用,所以不能删除该环境信息"), @@ -359,26 +360,26 @@ public enum Status { GET_DATASOURCE_OPTIONS_ERROR(1200017, "get datasource options error", "获取数据源Options错误"), GET_DATASOURCE_TABLES_ERROR(1200018, "get datasource tables error", "获取数据源表列表错误"), GET_DATASOURCE_TABLE_COLUMNS_ERROR(1200019, "get datasource table columns error", "获取数据源表列名错误"), - TASK_GROUP_NAME_EXSIT(130001,"this task group name is repeated in a project","该任务组名称在一个项目中已经使用"), - TASK_GROUP_SIZE_ERROR(130002,"task group size error","任务组大小应该为大于1的整数"), - TASK_GROUP_STATUS_ERROR(130003,"task group status error","任务组已经被关闭"), - TASK_GROUP_FULL(130004,"task group is full","任务组已经满了"), - TASK_GROUP_USED_SIZE_ERROR(130005,"the used size number of task group is dirty","任务组使用的容量发生了变化"), - TASK_GROUP_QUEUE_RELEASE_ERROR(130006,"failed to release task group queue","任务组资源释放时出现了错误"), - TASK_GROUP_QUEUE_AWAKE_ERROR(130007,"awake waiting task failed","任务组使唤醒等待任务时发生了错误"), - CREATE_TASK_GROUP_ERROR(130008,"create task group error","创建任务组错误"), - UPDATE_TASK_GROUP_ERROR(130009,"update task group list error","更新任务组错误"), - QUERY_TASK_GROUP_LIST_ERROR(130010,"query task group list error","查询任务组列表错误"), - CLOSE_TASK_GROUP_ERROR(130011,"close task group error","关闭任务组错误"), - START_TASK_GROUP_ERROR(130012,"start task group error","启动任务组错误"), - QUERY_TASK_GROUP_QUEUE_LIST_ERROR(130013,"query task group queue list error","查询任务组队列列表错误"), - TASK_GROUP_CACHE_START_FAILED(130014,"cache start failed","任务组相关的缓存启动失败"), + TASK_GROUP_NAME_EXSIT(130001, "this task group name is repeated in a project", "该任务组名称在一个项目中已经使用"), + TASK_GROUP_SIZE_ERROR(130002, "task group size error", "任务组大小应该为大于1的整数"), + TASK_GROUP_STATUS_ERROR(130003, "task group status error", "任务组已经被关闭"), + TASK_GROUP_FULL(130004, "task group is full", "任务组已经满了"), + TASK_GROUP_USED_SIZE_ERROR(130005, "the used size number of task group is dirty", "任务组使用的容量发生了变化"), + TASK_GROUP_QUEUE_RELEASE_ERROR(130006, "failed to release task group queue", "任务组资源释放时出现了错误"), + TASK_GROUP_QUEUE_AWAKE_ERROR(130007, "awake waiting task failed", "任务组使唤醒等待任务时发生了错误"), + CREATE_TASK_GROUP_ERROR(130008, "create task group error", "创建任务组错误"), + UPDATE_TASK_GROUP_ERROR(130009, "update task group list error", "更新任务组错误"), + QUERY_TASK_GROUP_LIST_ERROR(130010, "query task group list error", "查询任务组列表错误"), + CLOSE_TASK_GROUP_ERROR(130011, "close task group error", "关闭任务组错误"), + START_TASK_GROUP_ERROR(130012, "start task group error", "启动任务组错误"), + QUERY_TASK_GROUP_QUEUE_LIST_ERROR(130013, "query task group queue list error", "查询任务组队列列表错误"), + TASK_GROUP_CACHE_START_FAILED(130014, "cache start failed", "任务组相关的缓存启动失败"), ENVIRONMENT_WORKER_GROUPS_IS_INVALID(130015, "environment worker groups is invalid format", "环境关联的工作组参数解析错误"), - UPDATE_ENVIRONMENT_WORKER_GROUP_RELATION_ERROR(130016,"You can't modify the worker group, because the worker group [{0}] and this environment [{1}] already be used in the task [{2}]", + UPDATE_ENVIRONMENT_WORKER_GROUP_RELATION_ERROR(130016, "You can't modify the worker group, because the worker group [{0}] and this environment [{1}] already be used in the task [{2}]", "您不能修改工作组选项,因为该工作组 [{0}] 和 该环境 [{1}] 已经被用在任务 [{2}] 中"), TASK_GROUP_QUEUE_ALREADY_START(130017, "task group queue already start", "节点已经获取任务组资源"), - TASK_GROUP_STATUS_CLOSED(130018,"The task group has been closed.","任务组已经被关闭"), - TASK_GROUP_STATUS_OPENED(130019,"The task group has been opened.","任务组已经被开启"), + TASK_GROUP_STATUS_CLOSED(130018, "The task group has been closed.", "任务组已经被关闭"), + TASK_GROUP_STATUS_OPENED(130019, "The task group has been opened.", "任务组已经被开启"), NOT_ALLOW_TO_DISABLE_OWN_ACCOUNT(130020, "Not allow to disable your own account", "不能停用自己的账号"), NOT_ALLOW_TO_DELETE_DEFAULT_ALARM_GROUP(130030, "Not allow to delete the default alarm group ", "不能删除默认告警组"), TIME_ZONE_ILLEGAL(130031, "time zone [{0}] is illegal", "时区参数 [{0}] 不合法"), @@ -418,8 +419,6 @@ public enum Status { /** * Retrieve Status enum entity by status code. - * @param code - * @return */ public static Optional findStatusBy(int code) { for (Status status : Status.values()) { diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java index 5d32fda30c..cd5d18c463 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java @@ -101,9 +101,12 @@ public class LoggerServiceImpl extends BaseServiceImpl implements LoggerService TaskInstance taskInstance = processService.findTaskInstanceById(taskInstId); - if (taskInstance == null || StringUtils.isBlank(taskInstance.getHost())) { + if (taskInstance == null) { return Result.error(Status.TASK_INSTANCE_NOT_FOUND); } + if (StringUtils.isBlank(taskInstance.getHost())) { + return Result.error(Status.TASK_INSTANCE_HOST_IS_NULL); + } Result result = new Result<>(Status.SUCCESS.getCode(), Status.SUCCESS.getMsg()); String log = queryLog(taskInstance,skipLineNum,limit); result.setData(log); diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java index 840f38c141..b63e7d2463 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java @@ -92,7 +92,7 @@ public class LoggerServiceTest { Assert.assertTrue(true); logger.error("testQueryDataSourceList error {}", e.getMessage()); } - Assert.assertEquals(Status.TASK_INSTANCE_NOT_FOUND.getCode(), result.getCode().intValue()); + Assert.assertEquals(Status.TASK_INSTANCE_HOST_IS_NULL.getCode(), result.getCode().intValue()); //SUCCESS taskInstance.setHost("127.0.0.1:8080");