You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ca...@apache.org on 2021/12/23 07:06:14 UTC

[dolphinscheduler] branch 2.0.2-prepare updated: [cherry-pick-2.0.2] #7556 #7530 #7506 (#7570)

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

caishunfeng pushed a commit to branch 2.0.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/2.0.2-prepare by this push:
     new 1693405  [cherry-pick-2.0.2] #7556  #7530  #7506 (#7570)
1693405 is described below

commit 16934053833c2a7f368c742f22bf30b01f179a91
Author: wind <ca...@users.noreply.github.com>
AuthorDate: Thu Dec 23 15:06:10 2021 +0800

    [cherry-pick-2.0.2] #7556  #7530  #7506 (#7570)
    
    * [Improvement-#7529][tools] Init DB schema from the full sql file. (#7530)
    
    * [DS-7227][refactor] optimize alert plugin instance list order (#7506)
    
    [DS-7227][refactor] optimize alert plugin instance list order
    query all alert plugin instance list order by update time desc
    optimize `select *` sql in the AlterPluginInstanceMapper.xml
    
    Co-authored-by: lgcareer <18...@163.com>
    Co-authored-by: Tom <53...@qq.com>
---
 .../dao/upgrade/DolphinSchedulerManager.java       | 13 ++++--
 .../dolphinscheduler/dao/upgrade/UpgradeDao.java   | 53 ++++------------------
 .../dao/upgrade/shell/CreateDolphinScheduler.java  | 11 +++--
 .../dao/mapper/AlertPluginInstanceMapper.xml       | 15 ++++--
 ...postgre.sql => dolphinscheduler_postgresql.sql} |  0
 5 files changed, 37 insertions(+), 55 deletions(-)

diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/DolphinSchedulerManager.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/DolphinSchedulerManager.java
index 45186ba..9ac5546 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/DolphinSchedulerManager.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/DolphinSchedulerManager.java
@@ -53,21 +53,28 @@ public class DolphinSchedulerManager {
     }
 
     public void initDolphinScheduler() {
+        this.initDolphinSchedulerSchema();
+    }
+
+    /**
+     * whether schema is initialized
+     * @return true if schema is initialized
+     */
+    public boolean schemaIsInitialized() {
         // Determines whether the dolphinscheduler table structure has been init
         if (upgradeDao.isExistsTable("t_escheduler_version")
             || upgradeDao.isExistsTable("t_ds_version")
             || upgradeDao.isExistsTable("t_escheduler_queue")) {
             logger.info("The database has been initialized. Skip the initialization step");
-            return;
+            return true;
         }
-        this.initDolphinSchedulerSchema();
+        return false;
     }
 
     public void initDolphinSchedulerSchema() {
         logger.info("Start initializing the DolphinScheduler manager table structure");
         upgradeDao.initSchema();
     }
-
     public void upgradeDolphinScheduler() throws IOException {
         // Gets a list of all upgrades
         List<String> schemaList = SchemaUtils.getAllSchemaList();
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDao.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDao.java
index a0ebcd7..da9c2e0 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDao.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDao.java
@@ -70,52 +70,17 @@ public abstract class UpgradeDao {
     protected abstract DbType getDbType();
 
     public void initSchema() {
-        // Execute the dolphinscheduler DDL, it cannot be rolled back
-        runInitDDL();
-
-        // Execute the dolphinscheduler DML, it can be rolled back
-        runInitDML();
+        // Execute the dolphinscheduler full sql
+        runInitSql(getDbType());
     }
 
-    private void runInitDML() {
-        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + initSqlPath() + "/dolphinscheduler_dml.sql");
-        Connection conn = null;
-        try {
-            conn = dataSource.getConnection();
-            conn.setAutoCommit(false);
-
-            // Execute the dolphinscheduler_dml.sql script to import related data of dolphinscheduler
-            ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true);
-            Reader initSqlReader = new InputStreamReader(mysqlSQLFilePath.getInputStream());
-            initScriptRunner.runScript(initSqlReader);
-
-            conn.commit();
-        } catch (IOException e) {
-            try {
-                conn.rollback();
-            } catch (SQLException e1) {
-                logger.error(e1.getMessage(), e1);
-            }
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException(e.getMessage(), e);
-        } catch (Exception e) {
-            try {
-                if (null != conn) {
-                    conn.rollback();
-                }
-            } catch (SQLException e1) {
-                logger.error(e1.getMessage(), e1);
-            }
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException(e.getMessage(), e);
-        } finally {
-            ConnectionUtils.releaseResource(conn);
-        }
-
-    }
-
-    private void runInitDDL() {
-        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + initSqlPath() + "/dolphinscheduler_ddl.sql");
+    /**
+     * run init sql to init db schema
+     * @param dbType db type
+     */
+    private void runInitSql(DbType dbType) {
+        String sqlFile = String.format("dolphinscheduler_%s.sql",dbType.getDescp());
+        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + sqlFile);
         try (Connection conn = dataSource.getConnection()) {
             // Execute the dolphinscheduler_ddl.sql script to create the table structure of dolphinscheduler
             ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinScheduler.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinScheduler.java
index d1ac2e2..c7eec94 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinScheduler.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinScheduler.java
@@ -53,10 +53,13 @@ public class CreateDolphinScheduler {
 
         @Override
         public void run(String... args) throws Exception {
-            dolphinSchedulerManager.initDolphinScheduler();
-            logger.info("init DolphinScheduler finished");
-            dolphinSchedulerManager.upgradeDolphinScheduler();
-            logger.info("upgrade DolphinScheduler finished");
+            if (dolphinSchedulerManager.schemaIsInitialized()) {
+                dolphinSchedulerManager.upgradeDolphinScheduler();
+                logger.info("upgrade DolphinScheduler finished");
+            } else {
+                dolphinSchedulerManager.initDolphinScheduler();
+                logger.info("init DolphinScheduler finished");
+            }
             logger.info("create DolphinScheduler success");
         }
     }
diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertPluginInstanceMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertPluginInstanceMapper.xml
index babacc2..fe25d8d 100644
--- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertPluginInstanceMapper.xml
+++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertPluginInstanceMapper.xml
@@ -19,15 +19,22 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="org.apache.dolphinscheduler.dao.mapper.AlertPluginInstanceMapper">
 
+    <sql id="baseSql">
+        id, plugin_define_id, plugin_instance_params, create_time, update_time, instance_name
+    </sql>
+
+
     <select id="queryAllAlertPluginInstanceList"
             resultType="org.apache.dolphinscheduler.dao.entity.AlertPluginInstance">
-        select *
+        select
+        <include refid="baseSql"/>
         from t_ds_alert_plugin_instance
-        where 1 = 1
+        where 1 = 1 order by update_time desc
     </select>
 
     <select id="queryByIds" resultType="org.apache.dolphinscheduler.dao.entity.AlertPluginInstance">
-        select *
+        select
+        <include refid="baseSql"/>
         from t_ds_alert_plugin_instance
         where id in
         <foreach item="item" index="index" collection="ids"
@@ -38,7 +45,7 @@
 
     <select id="queryByInstanceNamePage" resultType="org.apache.dolphinscheduler.dao.entity.AlertPluginInstance">
         select
-        *
+        <include refid="baseSql"/>
         from t_ds_alert_plugin_instance
         where 1 = 1
         <if test="instanceName != null and instanceName != ''">
diff --git a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgre.sql b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
similarity index 100%
rename from dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgre.sql
rename to dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql