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