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);
     }
 }