You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2020/03/18 15:26:20 UTC

[incubator-dolphinscheduler] branch dev updated: add repace time when run history job and batch complement job , not current time (#2196)

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

lidongdai 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 880e995  add repace time when run history job and batch complement job ,not current time (#2196)
880e995 is described below

commit 880e995654e148511ff94dcf439ef0d591fa5796
Author: ruson <64...@qq.com>
AuthorDate: Wed Mar 18 23:26:07 2020 +0800

    add repace time when run history job and batch complement job ,not current time (#2196)
    
    * add release notes in 1.2.1 (#1654)
    
    * fix Monitor bug (#1656)
    
    * fix Monitor bug
    
    * fix zk monitor bug
    
    * fix api url (#1673)
    
    * get root path from zookeeper config
    
    * Fixed DAG zoom in and zoom out nodes separated from arrows #1679 (#1685)
    
    * fix api url
    
    * Fixed DAG zoom in and zoom out nodes separated from arrows #1679
    
    * check license and update (#1725)
    
    * Fixed tasks_queue and tasks_kill did not exist in zookeeper #1696 (#1734)
    
    Co-authored-by: elonlo <ga...@gmail.com>
    
    * upgrade jackson from 2.9.8 to 2.10.1 (#1767)
    
    * add out put log when master/worker server start (#1769)
    
    * merge hadoop.properties into common.properties
    
    * merge hadoop,zookeeper.properties into common.properties
    remove combined.properties/master.properties/worker.properties
    
    * change db user/pwd to test/test
    
    * rename .dolphinscheduler_en.sh to dolphinscheduler_env.sh
    remove some unused in install.sh
    
    * add out put log when master/worker server start...
    
    * add start log when servers start
    
    * add check download resource permission in order to fix issues 1770 (#1788)
    
    * merge dev branch front-end code (#1786)
    
    * fix #1775 bug,delete process definition when process instance is running (#1790)
    
    * fix #1775 bug,delete process definition when process instance is running
    
    * revert CONTRIBUTING.md
    
    * fix udfs assignment and task instance page jump #1789 (#1791)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * update method checkDownloadPermission in order to fix issues 1770 (#1794)
    
    * add check download resource permission in order to fix issues 1770
    
    * update method checkDownloadPermission in order to fix issues 1770
    
    * update method listUnauthorizedResource in order to fix issues 1770
    
    * update method listUnauthorizedResource in order to fix issues 1770 (#1797)
    
    * if login user is admin,it will has permission to query all udf function (#1799)
    
    * Fixed space and icon display issues before and after the input box (#1798)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * Fixed space and icon display issues before and after the input box
    
    * add license
    
    * add license
    
    * donot submit task to queue if sub process (#1793)
    
    * dockerfile modify (#1800)
    
    * fix #1775 bug,delete process definition when process instance is running
    
    * revert CONTRIBUTING.md
    
    * dockerfile modify
    
    * dockerfile modify
    
    * dockerfile modify
    
    * Fix data echo, style and popup cannot be closed (#1801)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * Fixed space and icon display issues before and after the input box
    
    * add license
    
    * add license
    
    * Fix data echo, style and popup cannot be closed
    
    * Fix page number loading issue and dag not getting value(#1810) (#1815)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * Fixed space and icon display issues before and after the input box
    
    * add license
    
    * add license
    
    * Fix data echo, style and popup cannot be closed
    
    * Fix page number loading issue and dag not getting value
    
    * [Fix issue #1770]check udf and data source in order to fix issue 1770 (#1817)
    
    * if login user is admin,it will has permission to query all udf function
    
    * check udf and data source in order to fix issue 1770
    
    * check udf and data source in order to fix issue 1770
    
    * check udf and data source in order to fix issue 1770
    
    * check udf and data source in order to fix issue 1770
    
    * check udf and data source in order to fix issue 1770
    
    * revert common.properties
    
    * update the test method name
    
    * remove useless code and import in unit test
    
    * refactor has permission and check permission
    
    * #1813 remove "_001" after the master/server register path in zookeepe (#1824)
    
    * donot submit task to queue if sub process
    
    * [feature] #1813 remove "_001" after the master/server register path in zookeeper (#1820)
    
    * change master/worker register path.
    
    * remove "_" from register path.
    
    * remove install.sh server.servlet.context-path replace (#1823)
    
    * fix #1775 bug,delete process definition when process instance is running
    
    * revert CONTRIBUTING.md
    
    * dockerfile modify
    
    * dockerfile modify
    
    * dockerfile modify
    
    * remove install.sh server.servlet.context-path replace
    
    * Fix DAG add dependent project value exception # 1816 and keep requesting task interface (#1827)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * Fixed space and icon display issues before and after the input box
    
    * add license
    
    * add license
    
    * Fix data echo, style and popup cannot be closed
    
    * Fix page number loading issue and dag not getting value
    
    * Fix DAG add dependent project value exception # 1816 and keep requesting task interface
    
    * rpm package add UI (#1846)
    
    * [fix #1828] when the executor of process instance is not the owner of udf resouce, the path of the read resource file is incorrect (#1847)
    
    * fix issue 1828:get the udf resource path error when create udf function
    
    * update grantResources
    
    * first verify whether udf resource is bound by udf function
    
    * update grantResources
    
    * update testListAuthorizedUdfFunc
    
    * update getUserInfo in order to run success
    
    * add LoggerServer RPC PORT modified. #1848 (#1849)
    
    * fix #1775 bug,delete process definition when process instance is running
    
    * revert CONTRIBUTING.md
    
    * dockerfile modify
    
    * dockerfile modify
    
    * dockerfile modify
    
    * remove install.sh server.servlet.context-path replace
    
    * add LoggerServer RPC PORT modified. #1848
    
    * LoggerService Logger RPC PORT get Error modify . #1848 (#1857)
    
    * fix #1775 bug,delete process definition when process instance is running
    
    * revert CONTRIBUTING.md
    
    * dockerfile modify
    
    * dockerfile modify
    
    * dockerfile modify
    
    * remove install.sh server.servlet.context-path replace
    
    * add LoggerServer RPC PORT modified. #1848
    
    * LoggerService Logger RPC PORT get Error modify . #1848
    
    * Fix UDF function list delete data without refresh and page data display widened #1851 (#1852)
    
    * merge dev branch front-end code
    
    * fix udfs assignment
    
    * Fix task instance page jump
    
    * fix udfs assignment and task instance page jump #1789
    
    * Fixed space and icon display issues before and after the input box
    
    * add license
    
    * add license
    
    * Fix data echo, style and popup cannot be closed
    
    * Fix page number loading issue and dag not getting value
    
    * Fix DAG add dependent project value exception # 1816 and keep requesting task interface
    
    * Fix UDF function list delete data without refresh and page data display widened
    
    * [Fix #1828]check whether has permission to download udf file or delete udf function (#1858)
    
    * fix issue 1828:get the udf resource path error when create udf function
    
    * update grantResources
    
    * first verify whether udf resource is bound by udf function
    
    * update grantResources
    
    * update testListAuthorizedUdfFunc
    
    * update getUserInfo in order to run success
    
    * check whether has permission to download udf file or delete udf file
    
    * update listAuthorizedResourceById in ResourceMapper.xml
    
    * add log, don't swallow exception info (#1877)
    
    * Added hints in Resource Center (#1891)
    
    * update jackson version from 2.9.8 to 2.10.1 (#1892)
    
    * update release notes and modify the plugin of rat (#1899)
    
    * modify how to build (#1902)
    
    * update release notes and modify the plugin of rat
    
    * modify how to build
    
    * [maven-release-plugin] prepare release 1.2.1
    
    * [maven-release-plugin] prepare for next development iteration
    
    * get authorized udf resources need exclude all created by self (#1905)
    
    * get authorized udf resources need exclude all created by self
    
    * reset pom version to 1.2.1-SNAPSHOT
    
    * Update ReleaseNotes.md
    
    add detail info
    
    * Update ReleaseNotes.md
    
    * update notice year form 2019 to 2019-2020 (#1907)
    
    * [maven-release-plugin] prepare release 1.2.1
    
    * [maven-release-plugin] prepare for next development iteration
    
    * 当手动重跑历史活着补数的时候对shell和sql脚本中的[YYYYmmddd...]变量赋值与传递的日期,而不是当前日期
    
    Co-authored-by: lgcareer <18...@163.com>
    Co-authored-by: bao liang <29...@users.noreply.github.com>
    Co-authored-by: break60 <79...@qq.com>
    Co-authored-by: Tboy <gu...@immomo.com>
    Co-authored-by: elonlo <ga...@gmail.com>
    Co-authored-by: qiaozhanwei <qi...@outlook.com>
    Co-authored-by: zhangchunyang <18...@163.com>
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: 谷雨 <li...@guyudeMacBook-Pro.local>
---
 .../apache/dolphinscheduler/common/Constants.java  |  7 ++
 .../common/utils/ParameterUtils.java               | 79 ++++++++++++++++++++++
 .../server/worker/task/shell/ShellTask.java        | 17 ++++-
 .../server/worker/task/sql/SqlTask.java            | 12 ++--
 4 files changed, 107 insertions(+), 8 deletions(-)

diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index b0a7b74..73655e7 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -999,4 +999,11 @@ public final class Constants {
      * dataSource sensitive param
      */
     public static final String DATASOURCE_PASSWORD_REGEX = "(?<=(\"password\":\")).*?(?=(\"))";
+
+
+    /**
+     * new
+     * schedule time
+     */
+    public static final String PARAMETER_SHECDULE_TIME = "schedule.time";
 }
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 7a4553a..270e0c4 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
@@ -79,6 +79,45 @@ public class ParameterUtils {
   }
 
   /**
+   * new
+   * convert parameters place holders
+   *
+   * @param parameterString parameter
+   * @param parameterMap parameter map
+   * @return convert parameters place holders
+   */
+  public static String convertParameterPlaceholders2(String parameterString, Map<String, String> parameterMap) {
+    if (StringUtils.isEmpty(parameterString)) {
+      return parameterString;
+    }
+    //Get current time, schedule execute time
+    String cronTimeStr = parameterMap.get(Constants.PARAMETER_SHECDULE_TIME);
+    Date cronTime = null;
+
+    if (StringUtils.isNotEmpty(cronTimeStr)) {
+      try {
+        cronTime = DateUtils.parseDate(cronTimeStr, new String[]{Constants.PARAMETER_FORMAT_TIME});
+
+      } catch (ParseException e) {
+        logger.error(String.format("parse %s exception", cronTimeStr), e);
+      }
+    } 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) {
+      parameterString = TimePlaceholderUtils.replacePlaceholders(parameterString, cronTime, true);
+
+    }
+    return parameterString;
+  }
+
+
+  /**
    *  set in parameter
    * @param index index
    * @param stmt preparedstatement
@@ -173,4 +212,44 @@ public class ParameterUtils {
     }
     return inputString;
   }
+
+  /**
+   * new
+   * $[yyyyMMdd] replace scheduler time
+   * @param text
+   * @param paramsMap
+   * @return
+   */
+  public static String replaceScheduleTime(String text, Date scheduleTime, Map<String, Property> paramsMap) {
+    if (paramsMap != null) {
+      //if getScheduleTime null ,is current date
+      if (null == scheduleTime) {
+        scheduleTime = new Date();
+      }
+      String dateTime = org.apache.dolphinscheduler.common.utils.DateUtils.format(scheduleTime, Constants.PARAMETER_FORMAT_TIME);
+      Property p = new Property();
+      p.setValue(dateTime);
+      p.setProp(Constants.PARAMETER_SHECDULE_TIME);
+      paramsMap.put(Constants.PARAMETER_SHECDULE_TIME, p);
+      text = ParameterUtils.convertParameterPlaceholders2(text, convert(paramsMap));
+    }
+    return text;
+  }
+
+
+  /**
+   * format convert
+   * @param paramsMap params map
+   * @return Map of converted
+   * see org.apache.dolphinscheduler.server.utils.ParamUtils.convert
+   */
+  public static Map<String,String> convert(Map<String,Property> paramsMap){
+    Map<String,String> map = new HashMap<>();
+    Iterator<Map.Entry<String, Property>> iter = paramsMap.entrySet().iterator();
+    while (iter.hasNext()){
+      Map.Entry<String, Property> en = iter.next();
+      map.put(en.getKey(),en.getValue().getValue());
+    }
+    return map;
+  }
 }
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 90661a6..2c8433a 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
@@ -21,6 +21,7 @@ import org.apache.dolphinscheduler.common.Constants;
 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;
@@ -142,11 +143,21 @@ public class ShellTask extends AbstractTask {
             shellParameters.getLocalParametersMap(),
             taskProps.getCmdTypeIfComplement(),
             taskProps.getScheduleTime());
-    if (paramsMap != null){
-      script = ParameterUtils.convertParameterPlaceholders(script, ParamUtils.convert(paramsMap));
+//    if (paramsMap != null){
+//      script = ParameterUtils.convertParameterPlaceholders(script, ParamUtils.convert(paramsMap));
+//    }
+
+    //new
+//    replace variable TIME with $[YYYYmmddd...] in shell file when history run job and batch complement job
+    if (paramsMap != null) {
+      String dateTime = DateUtils.format(taskProps.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));
     }
 
-
     shellParameters.setRawScript(script);
 
     logger.info("raw script : {}", shellParameters.getRawScript());
diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/sql/SqlTask.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/sql/SqlTask.java
index 8203474..71ab56b 100644
--- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/sql/SqlTask.java
+++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/sql/SqlTask.java
@@ -222,7 +222,9 @@ public class SqlTask extends AbstractTask {
             logger.info("SQL title : {}",title);
             sqlParameters.setTitle(title);
         }
-
+        //new
+        //replace variable TIME with $[YYYYmmddd...] in sql when history run job and batch complement job
+        sql = ParameterUtils.replaceScheduleTime(sql, taskProps.getScheduleTime(), paramsMap);
         // special characters need to be escaped, ${} needs to be escaped
         String rgex = "['\"]*\\$\\{(.*?)\\}['\"]*";
         setSqlParamsMap(sql, rgex, sqlParamsMap, paramsMap);
@@ -341,10 +343,10 @@ public class SqlTask extends AbstractTask {
             logger.error(e.getMessage(),e);
             throw new RuntimeException(e.getMessage());
         } finally {
-            try { 
-                connection.close(); 
-            } catch (Exception e) { 
-                logger.error(e.getMessage(), e); 
+            try {
+                connection.close();
+            } catch (Exception e) {
+                logger.error(e.getMessage(), e);
             }
         }
         return connection;