This is an automated email from the ASF dual-hosted git repository.
caishunfeng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 852597c [Bug-9070][Server]fix taskExecutionContext json convert error
(#9072)
852597c is described below
commit 852597c9bf3340b679be8e11b5fe33b3e34e03e7
Author: caishunfeng <[email protected]>
AuthorDate: Tue Mar 22 14:02:07 2022 +0800
[Bug-9070][Server]fix taskExecutionContext json convert error (#9072)
* [Bug-9070][Server]fix taskExecutionContext json convert error
* test
* add license header
Co-authored-by: caishunfeng <[email protected]>
---
.../master/consumer/TaskPriorityQueueConsumer.java | 2 +-
.../resource/AbstractResourceParameters.java | 9 ++++
.../resource/ResourceParametersHelper.java | 12 +++--
.../resource/AbstractResourceParametersTest.java | 56 ++++++++++++++++++++++
4 files changed, 74 insertions(+), 5 deletions(-)
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/consumer/TaskPriorityQueueConsumer.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/consumer/TaskPriorityQueueConsumer.java
index 7c158ad..d7d5494 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/consumer/TaskPriorityQueueConsumer.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/consumer/TaskPriorityQueueConsumer.java
@@ -168,7 +168,7 @@ public class TaskPriorityQueueConsumer extends Thread {
}
result = dispatcher.dispatch(executionContext);
- } catch (ExecuteException e) {
+ } catch (RuntimeException | ExecuteException e) {
logger.error("dispatch error: {}", e.getMessage(), e);
}
return result;
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParameters.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParameters.java
index 7f05b12..39193c8 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParameters.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParameters.java
@@ -17,6 +17,15 @@
package org.apache.dolphinscheduler.plugin.task.api.parameters.resource;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
+@JsonSubTypes({
+ @Type(value = DataSourceParameters.class, name = "DATASOURCE"),
+ @Type(value = UdfFuncParameters.class, name = "UDF")
+})
public abstract class AbstractResourceParameters {
}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/ResourceParametersHelper.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/ResourceParametersHelper.java
index 43c4aaf..14628c0 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/ResourceParametersHelper.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/ResourceParametersHelper.java
@@ -25,23 +25,27 @@ import java.util.Objects;
public class ResourceParametersHelper {
- private Map<ResourceType, Map<Integer, AbstractResourceParameters>> map =
new HashMap<>();
+ private Map<ResourceType, Map<Integer, AbstractResourceParameters>>
resourceMap = new HashMap<>();
public void put(ResourceType resourceType, Integer id) {
put(resourceType, id, null);
}
public void put(ResourceType resourceType, Integer id,
AbstractResourceParameters parameters) {
- Map<Integer, AbstractResourceParameters> resourceParametersMap =
map.get(resourceType);
+ Map<Integer, AbstractResourceParameters> resourceParametersMap =
resourceMap.get(resourceType);
if (Objects.isNull(resourceParametersMap)) {
resourceParametersMap = new HashMap<>();
- map.put(resourceType, resourceParametersMap);
+ resourceMap.put(resourceType, resourceParametersMap);
}
resourceParametersMap.put(id, parameters);
}
+ public void setResourceMap(Map<ResourceType, Map<Integer,
AbstractResourceParameters>> resourceMap) {
+ this.resourceMap = resourceMap;
+ }
+
public Map<ResourceType, Map<Integer, AbstractResourceParameters>>
getResourceMap() {
- return map;
+ return resourceMap;
}
public Map<Integer, AbstractResourceParameters>
getResourceMap(ResourceType resourceType) {
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParametersTest.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParametersTest.java
new file mode 100644
index 0000000..9f96294
--- /dev/null
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/AbstractResourceParametersTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.dolphinscheduler.plugin.task.api.parameters.resource;
+
+import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
+import org.apache.dolphinscheduler.plugin.task.api.parameters.SqlParameters;
+import org.apache.dolphinscheduler.spi.enums.DbType;
+import org.apache.dolphinscheduler.spi.utils.JSONUtils;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class AbstractResourceParametersTest {
+
+ @Test
+ public void testDataSource() {
+ TaskExecutionContext taskExecutionContext = new TaskExecutionContext();
+ String taskParam =
"{\"localParams\":[],\"resourceList\":[],\"type\":\"MYSQL\",\"datasource\":\"1\",\"sql\":\"select
now();\",\"sqlType\":\"0\",\"preStatements\":[],\"postStatements\":[],\"conditionResult\":\"null\",\"dependence\":\"null\",\"switchResult\":\"null\",\"waitStartTimeout\":null}";
+
+ ResourceParametersHelper resourceParametersHelper =
JSONUtils.parseObject(taskParam, SqlParameters.class).getResources();
+
+ resourceParametersHelper.getResourceMap().forEach((type, map) -> {
+ map.forEach((code, parameters) -> {
+ DataSourceParameters dataSourceParameters = new
DataSourceParameters();
+ dataSourceParameters.setType(DbType.MYSQL);
+ dataSourceParameters.setConnectionParams("127.0.0.1:3306");
+ map.put(code, dataSourceParameters);
+ });
+ });
+
+
taskExecutionContext.setResourceParametersHelper(resourceParametersHelper);
+
+ String json = JSONUtils.toJsonString(taskExecutionContext);
+
+ taskExecutionContext = JSONUtils.parseObject(json,
TaskExecutionContext.class);
+
+ Assert.assertNotNull(taskExecutionContext);
+ }
+}
+
+