From d7b393620552be1216feded973333718c4440efa Mon Sep 17 00:00:00 2001 From: Kirs Date: Tue, 15 Dec 2020 16:24:31 +0800 Subject: [PATCH] [FIX-3177]Task time parameter parsing error (#4228) * [FIX-3177]Task time parameter parsing error when system.datetime !=null $[datetime] = system.datetime else $[datetime] = current time * remove unused import --- .../common/utils/ParameterUtils.java | 18 ++++++------------ .../server/worker/task/shell/ShellTask.java | 15 +-------------- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java index b6362c05e2..2a08734aab 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java @@ -61,29 +61,23 @@ public class ParameterUtils { * @return convert parameters place holders */ public static String convertParameterPlaceholders(String parameterString, Map parameterMap) { - if (StringUtils.isEmpty(parameterString) || parameterMap == null) { + if (StringUtils.isEmpty(parameterString)) { return parameterString; } - - //Get current time, schedule execute time - String cronTimeStr = parameterMap.get(Constants.PARAMETER_DATETIME); - Date cronTime; - - if (StringUtils.isNotEmpty(cronTimeStr)) { + if (parameterMap != null && !parameterMap.isEmpty()) { + //Get current time, schedule execute time + String cronTimeStr = parameterMap.get(Constants.PARAMETER_DATETIME); cronTime = DateUtils.parse(cronTimeStr, Constants.PARAMETER_FORMAT_TIME); + // replace variable ${} form,refers to the replacement of system variables and custom variables + parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true); } else { cronTime = new Date(); } - - // replace variable ${} form,refers to the replacement of system variables and custom variables - parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true); - // replace time $[...] form, eg. $[yyyyMMdd] if (cronTime != null) { return dateTemplateParse(parameterString, cronTime); } - return parameterString; } diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/shell/ShellTask.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/shell/ShellTask.java index d1428b4be0..835fe40028 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/shell/ShellTask.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/shell/ShellTask.java @@ -22,7 +22,6 @@ import org.apache.dolphinscheduler.common.enums.CommandType; import org.apache.dolphinscheduler.common.process.Property; import org.apache.dolphinscheduler.common.task.AbstractParameters; import org.apache.dolphinscheduler.common.task.shell.ShellParameters; -import org.apache.dolphinscheduler.common.utils.DateUtils; import org.apache.dolphinscheduler.common.utils.JSONUtils; import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.common.utils.ParameterUtils; @@ -136,20 +135,8 @@ public class ShellTask extends AbstractTask { shellParameters.getLocalParametersMap(), CommandType.of(taskExecutionContext.getCmdTypeIfComplement()), taskExecutionContext.getScheduleTime()); - // replace variable TIME with $[YYYYmmddd...] in shell file when history run job and batch complement job - if (paramsMap != null) { - if (taskExecutionContext.getScheduleTime() != null) { - String dateTime = DateUtils.format(taskExecutionContext.getScheduleTime(), Constants.PARAMETER_FORMAT_TIME); - Property p = new Property(); - p.setValue(dateTime); - p.setProp(Constants.PARAMETER_SHECDULE_TIME); - paramsMap.put(Constants.PARAMETER_SHECDULE_TIME, p); - } - } - - script = ParameterUtils.convertParameterPlaceholders2(script, ParamUtils.convert(paramsMap)); - + script = ParameterUtils.convertParameterPlaceholders(script, ParamUtils.convert(paramsMap)); shellParameters.setRawScript(script); logger.info("raw script : {}", shellParameters.getRawScript());