This is an automated email from the ASF dual-hosted git repository.

leonbao 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 d7b3936  [FIX-3177]Task time parameter parsing error (#4228)
d7b3936 is described below

commit d7b393620552be1216feded973333718c4440efa
Author: Kirs <[email protected]>
AuthorDate: Tue Dec 15 16:24:31 2020 +0800

    [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
---
 .../dolphinscheduler/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 b6362c0..2a08734 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<String, String> 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 d1428b4..835fe40 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());

Reply via email to