This is an automated email from the ASF dual-hosted git repository. zhongjiajie pushed a commit to branch 3.0.3-prepare in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
commit 31296afad4b1c6480487da9af6b53643273c0a89 Author: Kerwin <[email protected]> AuthorDate: Wed Oct 19 09:43:36 2022 +0800 Fix timing scheduling trigger master service report to get command parameter null pointer exception (#12419) (cherry picked from commit a8e23008acdebd99811271611a15e83a9a7d8d92) --- .../service/process/ProcessServiceImpl.java | 22 ++++++++++++---------- .../service/quartz/ProcessScheduleJob.java | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java index c552740021..08f33e5619 100644 --- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java +++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java @@ -30,6 +30,7 @@ import static org.apache.dolphinscheduler.plugin.task.api.enums.DataType.VARCHAR import static org.apache.dolphinscheduler.plugin.task.api.enums.Direct.IN; import static org.apache.dolphinscheduler.plugin.task.api.utils.DataQualityConstants.TASK_INSTANCE_ID; +import org.apache.commons.lang3.StringUtils; import static java.util.stream.Collectors.toSet; import org.apache.dolphinscheduler.common.Constants; @@ -133,7 +134,6 @@ import org.apache.dolphinscheduler.service.task.TaskPluginManager; import org.apache.dolphinscheduler.spi.enums.ResourceType; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import java.util.ArrayList; @@ -390,16 +390,18 @@ public class ProcessServiceImpl implements ProcessService { @Counted("dolphinscheduler_create_command_count") public int createCommand(Command command) { int result = 0; - if (command != null) { - // add command timezone - Schedule schedule = scheduleMapper.queryByProcessDefinitionCode(command.getProcessDefinitionCode()); - Map<String, String> commandParams = JSONUtils.toMap(command.getCommandParam()); - if (commandParams != null && schedule != null) { - commandParams.put(Constants.SCHEDULE_TIMEZONE, schedule.getTimezoneId()); - command.setCommandParam(JSONUtils.toJsonString(commandParams)); - } - result = commandMapper.insert(command); + if (command == null) { + return result; + } + // add command timezone + Schedule schedule = scheduleMapper.queryByProcessDefinitionCode(command.getProcessDefinitionCode()); + if (schedule != null) { + Map<String, String> commandParams = StringUtils.isNotBlank(command.getCommandParam()) ? JSONUtils.toMap(command.getCommandParam()) : new HashMap<>(); + commandParams.put(Constants.SCHEDULE_TIMEZONE, schedule.getTimezoneId()); + command.setCommandParam(JSONUtils.toJsonString(commandParams)); } + command.setId(null); + result = commandMapper.insert(command); return result; } diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/quartz/ProcessScheduleJob.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/quartz/ProcessScheduleJob.java index ec5ed36f45..d726840fa1 100644 --- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/quartz/ProcessScheduleJob.java +++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/quartz/ProcessScheduleJob.java @@ -17,6 +17,7 @@ package org.apache.dolphinscheduler.service.quartz; +import org.apache.commons.lang3.StringUtils; import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.CommandType; import org.apache.dolphinscheduler.common.enums.ReleaseState; @@ -36,7 +37,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.util.StringUtils; import io.micrometer.core.annotation.Counted; import io.micrometer.core.annotation.Timed;
