You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by te...@apache.org on 2020/09/17 05:58:53 UTC
[incubator-dolphinscheduler] branch dev updated: [fix-3745][server]
server get tasktype NPE exception (#3746)
This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 36d5349 [fix-3745][server] server get tasktype NPE exception (#3746)
36d5349 is described below
commit 36d534961020f7a44c9e4e2ac7594446597d88c6
Author: zhuangchong <37...@users.noreply.github.com>
AuthorDate: Thu Sep 17 13:58:43 2020 +0800
[fix-3745][server] server get tasktype NPE exception (#3746)
---
.../common/utils/TaskParametersUtils.java | 71 +++++++++++-----------
.../server/worker/task/TaskManager.java | 10 ++-
.../server/worker/task/TaskManagerTest.java | 19 ++++--
3 files changed, 58 insertions(+), 42 deletions(-)
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
index 2b40b07..af2961e 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
@@ -55,41 +55,42 @@ public class TaskParametersUtils {
* @return task parameters
*/
public static AbstractParameters getParameters(String taskType, String parameter) {
- try {
- switch (EnumUtils.getEnum(TaskType.class, taskType)) {
- case SUB_PROCESS:
- return JSONUtils.parseObject(parameter, SubProcessParameters.class);
- case SHELL:
- case WATERDROP:
- return JSONUtils.parseObject(parameter, ShellParameters.class);
- case PROCEDURE:
- return JSONUtils.parseObject(parameter, ProcedureParameters.class);
- case SQL:
- return JSONUtils.parseObject(parameter, SqlParameters.class);
- case MR:
- return JSONUtils.parseObject(parameter, MapreduceParameters.class);
- case SPARK:
- return JSONUtils.parseObject(parameter, SparkParameters.class);
- case PYTHON:
- return JSONUtils.parseObject(parameter, PythonParameters.class);
- case DEPENDENT:
- return JSONUtils.parseObject(parameter, DependentParameters.class);
- case FLINK:
- return JSONUtils.parseObject(parameter, FlinkParameters.class);
- case HTTP:
- return JSONUtils.parseObject(parameter, HttpParameters.class);
- case DATAX:
- return JSONUtils.parseObject(parameter, DataxParameters.class);
- case CONDITIONS:
- return JSONUtils.parseObject(parameter, ConditionsParameters.class);
- case SQOOP:
- return JSONUtils.parseObject(parameter, SqoopParameters.class);
- default:
- return null;
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
+ TaskType anEnum = EnumUtils.getEnum(TaskType.class, taskType);
+ if (anEnum == null) {
+ logger.error("not support task type: {}", taskType);
+ return null;
}
- return null;
+ switch (anEnum) {
+ case SUB_PROCESS:
+ return JSONUtils.parseObject(parameter, SubProcessParameters.class);
+ case SHELL:
+ case WATERDROP:
+ return JSONUtils.parseObject(parameter, ShellParameters.class);
+ case PROCEDURE:
+ return JSONUtils.parseObject(parameter, ProcedureParameters.class);
+ case SQL:
+ return JSONUtils.parseObject(parameter, SqlParameters.class);
+ case MR:
+ return JSONUtils.parseObject(parameter, MapreduceParameters.class);
+ case SPARK:
+ return JSONUtils.parseObject(parameter, SparkParameters.class);
+ case PYTHON:
+ return JSONUtils.parseObject(parameter, PythonParameters.class);
+ case DEPENDENT:
+ return JSONUtils.parseObject(parameter, DependentParameters.class);
+ case FLINK:
+ return JSONUtils.parseObject(parameter, FlinkParameters.class);
+ case HTTP:
+ return JSONUtils.parseObject(parameter, HttpParameters.class);
+ case DATAX:
+ return JSONUtils.parseObject(parameter, DataxParameters.class);
+ case CONDITIONS:
+ return JSONUtils.parseObject(parameter, ConditionsParameters.class);
+ case SQOOP:
+ return JSONUtils.parseObject(parameter, SqoopParameters.class);
+ default:
+ return null;
+ }
+
}
}
diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/TaskManager.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/TaskManager.java
index 34eea9d..a946333 100644
--- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/TaskManager.java
+++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/TaskManager.java
@@ -30,7 +30,6 @@ import org.apache.dolphinscheduler.server.worker.task.shell.ShellTask;
import org.apache.dolphinscheduler.server.worker.task.spark.SparkTask;
import org.apache.dolphinscheduler.server.worker.task.sql.SqlTask;
import org.apache.dolphinscheduler.server.worker.task.sqoop.SqoopTask;
-
import org.slf4j.Logger;
/**
@@ -46,7 +45,12 @@ public class TaskManager {
* @throws IllegalArgumentException illegal argument exception
*/
public static AbstractTask newTask(TaskExecutionContext taskExecutionContext, Logger logger) throws IllegalArgumentException {
- switch (EnumUtils.getEnum(TaskType.class,taskExecutionContext.getTaskType())) {
+ TaskType anEnum = EnumUtils.getEnum(TaskType.class, taskExecutionContext.getTaskType());
+ if (anEnum == null) {
+ logger.error("not support task type: {}", taskExecutionContext.getTaskType());
+ throw new IllegalArgumentException("not support task type");
+ }
+ switch (anEnum) {
case SHELL:
case WATERDROP:
return new ShellTask(taskExecutionContext, logger);
@@ -69,7 +73,7 @@ public class TaskManager {
case SQOOP:
return new SqoopTask(taskExecutionContext, logger);
default:
- logger.error("unsupport task type: {}", taskExecutionContext.getTaskType());
+ logger.error("not support task type: {}", taskExecutionContext.getTaskType());
throw new IllegalArgumentException("not support task type");
}
}
diff --git a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/worker/task/TaskManagerTest.java b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/worker/task/TaskManagerTest.java
index 058270e..eb03839 100644
--- a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/worker/task/TaskManagerTest.java
+++ b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/worker/task/TaskManagerTest.java
@@ -38,6 +38,8 @@ import org.slf4j.LoggerFactory;
@PrepareForTest({SpringApplicationContext.class})
public class TaskManagerTest {
+ private static Logger logger = LoggerFactory.getLogger(TaskManagerTest.class);
+
private TaskExecutionContext taskExecutionContext;
private Logger taskLogger;
@@ -95,9 +97,18 @@ public class TaskManagerTest {
Assert.assertNotNull(TaskManager.newTask(taskExecutionContext,taskLogger));
taskExecutionContext.setTaskType("SQOOP");
Assert.assertNotNull(TaskManager.newTask(taskExecutionContext,taskLogger));
- //taskExecutionContext.setTaskType(null);
- //Assert.assertNull(TaskManager.newTask(taskExecutionContext,taskLogger));
- //taskExecutionContext.setTaskType("XXX");
- //Assert.assertNotNull(TaskManager.newTask(taskExecutionContext,taskLogger));
+
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNewTaskIsNull() {
+ taskExecutionContext.setTaskType(null);
+ TaskManager.newTask(taskExecutionContext,taskLogger);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNewTaskIsNotExists() {
+ taskExecutionContext.setTaskType("XXX");
+ TaskManager.newTask(taskExecutionContext,taskLogger);
}
}