diff --git a/dolphinscheduler-dao/pom.xml b/dolphinscheduler-dao/pom.xml
index 3adb3077fd..4fff6575dc 100644
--- a/dolphinscheduler-dao/pom.xml
+++ b/dolphinscheduler-dao/pom.xml
@@ -151,22 +151,5 @@
org.yaml
snakeyaml
-
- org.powermock
- powermock-module-junit4
- test
-
-
-
- org.powermock
- powermock-api-mockito2
- test
-
-
- org.mockito
- mockito-core
-
-
-
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 aa6bf62299..b2daae28cb 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
@@ -14,19 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.dao.upgrade;
import org.apache.dolphinscheduler.common.enums.DbType;
import org.apache.dolphinscheduler.common.utils.SchemaUtils;
-
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.List;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
/**
* upgrade manager
@@ -65,7 +60,7 @@ public class DolphinSchedulerManager {
/**
* init DolphinScheduler
*/
- public void initDolphinScheduler() throws SQLException, IOException {
+ public void initDolphinScheduler() {
// Determines whether the dolphinscheduler table structure has been init
if (upgradeDao.isExistsTable("t_escheduler_version") ||
upgradeDao.isExistsTable("t_ds_version") ||
@@ -79,7 +74,7 @@ public class DolphinSchedulerManager {
/**
* init DolphinScheduler Schema
*/
- public void initDolphinSchedulerSchema() throws SQLException, IOException {
+ public void initDolphinSchedulerSchema() {
logger.info("Start initializing the DolphinScheduler manager table structure");
upgradeDao.initSchema();
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 67193df532..f0ffc52f68 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
@@ -14,25 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.dao.upgrade;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.dolphinscheduler.common.enums.DbType;
import org.apache.dolphinscheduler.common.process.ResourceInfo;
-import org.apache.dolphinscheduler.common.utils.CollectionUtils;
-import org.apache.dolphinscheduler.common.utils.ConnectionUtils;
-import org.apache.dolphinscheduler.common.utils.JSONUtils;
-import org.apache.dolphinscheduler.common.utils.SchemaUtils;
-import org.apache.dolphinscheduler.common.utils.ScriptRunner;
-import org.apache.dolphinscheduler.common.utils.StringUtils;
+import org.apache.dolphinscheduler.common.utils.*;
import org.apache.dolphinscheduler.dao.AbstractBaseDao;
import org.apache.dolphinscheduler.dao.datasource.ConnectionFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
+import javax.sql.DataSource;
+import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -43,14 +38,6 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import javax.sql.DataSource;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
public abstract class UpgradeDao extends AbstractBaseDao {
public static final Logger logger = LoggerFactory.getLogger(UpgradeDao.class);
@@ -60,9 +47,6 @@ public abstract class UpgradeDao extends AbstractBaseDao {
protected static final DataSource dataSource = getDataSource();
private static final DbType dbType = getCurrentDbType();
- private static final String MYSQL_CREATE_SCRIPT = rootDir + "/sql/dolphinscheduler_mysql.sql";
- private static final String POSTGRE_CREATE_SCRIPT = rootDir + "/sql/dolphinscheduler_postgre.sql";
-
@Override
protected void init() {
@@ -106,40 +90,119 @@ public abstract class UpgradeDao extends AbstractBaseDao {
/**
* init schema
*/
- public void initSchema() throws SQLException, IOException {
+ public void initSchema() {
DbType dbType = getDbType();
String initSqlPath = "";
if (dbType != null) {
switch (dbType) {
case MYSQL:
- initSqlPath = MYSQL_CREATE_SCRIPT;
+ initSqlPath = "/sql/create/release-1.0.0_schema/mysql/";
+ initSchema(initSqlPath);
break;
case POSTGRESQL:
- initSqlPath = POSTGRE_CREATE_SCRIPT;
+ initSqlPath = "/sql/create/release-1.2.0_schema/postgresql/";
+ initSchema(initSqlPath);
break;
default:
logger.error("not support sql type: {},can't upgrade", dbType);
throw new IllegalArgumentException("not support sql type,can't upgrade");
}
}
+ }
+
+
+ /**
+ * init scheam
+ *
+ * @param initSqlPath initSqlPath
+ */
+ public void initSchema(String initSqlPath) {
+
+ // Execute the dolphinscheduler DDL, it cannot be rolled back
+ runInitDDL(initSqlPath);
+
+ // Execute the dolphinscheduler DML, it can be rolled back
+ runInitDML(initSqlPath);
+
+
+ }
+
+ /**
+ * run DML
+ *
+ * @param initSqlPath initSqlPath
+ */
+ private void runInitDML(String initSqlPath) {
+ Connection conn = null;
if (StringUtils.isEmpty(rootDir)) {
throw new RuntimeException("Environment variable user.dir not found");
}
- logger.info("Init sql filePath: {}", initSqlPath);
- try (Connection conn = dataSource.getConnection()) {
+ String mysqlSQLFilePath = rootDir + initSqlPath + "dolphinscheduler_dml.sql";
+ 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 FileReader(new File(mysqlSQLFilePath));
+ initScriptRunner.runScript(initSqlReader);
+
+ conn.commit();
+ } catch (IOException e) {
try {
- conn.setAutoCommit(false);
- ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true);
- Reader initSqlReader = new FileReader(initSqlPath);
- initScriptRunner.runScript(initSqlReader);
- conn.commit();
- } catch (IOException | SQLException e) {
conn.rollback();
- logger.error("execute init script error.", e);
- throw e;
+ } 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 {
- // ignore
+ ConnectionUtils.releaseResource(conn);
+
+ }
+
+ }
+
+ /**
+ * run DDL
+ *
+ * @param initSqlPath initSqlPath
+ */
+ private void runInitDDL(String initSqlPath) {
+ Connection conn = null;
+ if (StringUtils.isEmpty(rootDir)) {
+ throw new RuntimeException("Environment variable user.dir not found");
+ }
+ //String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_ddl.sql";
+ String mysqlSQLFilePath = rootDir + initSqlPath + "dolphinscheduler_ddl.sql";
+ try {
+ conn = dataSource.getConnection();
+ // Execute the dolphinscheduler_ddl.sql script to create the table structure of dolphinscheduler
+ ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
+ Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath));
+ initScriptRunner.runScript(initSqlReader);
+
+ } catch (IOException e) {
+
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
+ } catch (Exception e) {
+
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
+ } finally {
+ ConnectionUtils.releaseResource(conn);
+
}
}
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 edfe3bfefe..1c0f002567 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
@@ -14,35 +14,35 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.dao.upgrade.shell;
import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* create DolphinScheduler
+ *
*/
public class CreateDolphinScheduler {
- private static final Logger logger = LoggerFactory.getLogger(CreateDolphinScheduler.class);
+ private static final Logger logger = LoggerFactory.getLogger(CreateDolphinScheduler.class);
- /**
+ /**
* create dolphin scheduler db
- *
- * @param args args
- */
- public static void main(String[] args) {
- DolphinSchedulerManager dolphinSchedulerManager = new DolphinSchedulerManager();
- try {
- logger.info("create DolphinScheduler begin");
- dolphinSchedulerManager.initDolphinScheduler();
- logger.info("create DolphinScheduler success");
- } catch (Exception e) {
- logger.error("create DolphinScheduler failed", e);
- }
+ * @param args args
+ */
+ public static void main(String[] args) {
+ DolphinSchedulerManager dolphinSchedulerManager = new DolphinSchedulerManager();
+ try {
+ dolphinSchedulerManager.initDolphinScheduler();
+ logger.info("init DolphinScheduler finished");
+ dolphinSchedulerManager.upgradeDolphinScheduler();
+ logger.info("upgrade DolphinScheduler finished");
+ logger.info("create DolphinScheduler success");
+ } catch (Exception e) {
+ logger.error("create DolphinScheduler failed",e);
+ }
- }
+ }
}
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinScheduler.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinScheduler.java
index 6abe184d2a..3bcb3abc03 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinScheduler.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinScheduler.java
@@ -14,34 +14,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.dao.upgrade.shell;
import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* init DolphinScheduler
+ *
*/
public class InitDolphinScheduler {
- private static final Logger logger = LoggerFactory.getLogger(InitDolphinScheduler.class);
+ private static final Logger logger = LoggerFactory.getLogger(InitDolphinScheduler.class);
/**
* init dolphin scheduler db
* @param args args
*/
- public static void main(String[] args) {
- Thread.currentThread().setName("manager-InitDolphinScheduler");
- DolphinSchedulerManager dolphinSchedulerManager = new DolphinSchedulerManager();
- try {
- dolphinSchedulerManager.initDolphinScheduler();
- logger.info("init DolphinScheduler finished");
- } catch (Exception ex) {
- logger.error("init DolphinScheduler error", ex);
- }
-
- }
+ public static void main(String[] args) {
+ Thread.currentThread().setName("manager-InitDolphinScheduler");
+ DolphinSchedulerManager dolphinSchedulerManager = new DolphinSchedulerManager();
+ dolphinSchedulerManager.initDolphinScheduler();
+ logger.info("init DolphinScheduler finished");
+
+ }
}
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDaoTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDaoTest.java
index 986149f98e..ed96e920f5 100644
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDaoTest.java
+++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDaoTest.java
@@ -14,76 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.dao.upgrade;
-import org.apache.dolphinscheduler.common.utils.ScriptRunner;
-import org.apache.dolphinscheduler.dao.datasource.ConnectionFactory;
-
-import java.io.FileReader;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import org.junit.Test;
import javax.sql.DataSource;
+import java.util.Map;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import static org.apache.dolphinscheduler.dao.upgrade.UpgradeDao.getDataSource;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.junit.Assert.assertThat;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ConnectionFactory.class, ScriptRunner.class, FileReader.class})
public class UpgradeDaoTest {
+ PostgresqlUpgradeDao postgresqlUpgradeDao = PostgresqlUpgradeDao.getInstance();
@Test
- public void testGetCurrentVersion() throws SQLException {
- PowerMockito.mockStatic(ConnectionFactory.class);
- ConnectionFactory mockConnectionFactory = PowerMockito.mock(ConnectionFactory.class);
- PowerMockito.when(ConnectionFactory.getInstance()).thenReturn(mockConnectionFactory);
- DataSource mockDatasource = PowerMockito.mock(DataSource.class);
- PowerMockito.when(mockConnectionFactory.getDataSource()).thenReturn(mockDatasource);
- Connection mockConnection = PowerMockito.mock(Connection.class);
- PowerMockito.when(mockDatasource.getConnection()).thenReturn(mockConnection);
- PreparedStatement mockPrepareStatement = PowerMockito.mock(PreparedStatement.class);
- PowerMockito.when(mockConnection.prepareStatement(Mockito.any())).thenReturn(mockPrepareStatement);
- ResultSet mockResultSet = PowerMockito.mock(ResultSet.class);
- PowerMockito.when(mockPrepareStatement.executeQuery()).thenReturn(mockResultSet);
-
- DatabaseMetaData mockMetaData = PowerMockito.mock(DatabaseMetaData.class);
- PowerMockito.when(mockConnection.getMetaData()).thenReturn(mockMetaData);
- PowerMockito.when(mockMetaData.getDatabaseProductName()).thenReturn("mysql");
-
- UpgradeDao upgradeDao = MysqlUpgradeDao.getInstance();
- upgradeDao.getCurrentVersion("xx");
- Assert.assertTrue(true);
+ public void testQueryQueryAllOldWorkerGroup() throws Exception{
+ postgresqlUpgradeDao.updateProcessDefinitionJsonWorkerGroup();
}
- @Test(expected = IOException.class)
- public void testInitSchema() throws Exception {
-
- PowerMockito.mockStatic(ConnectionFactory.class);
- ConnectionFactory mockConnectionFactory = PowerMockito.mock(ConnectionFactory.class);
- PowerMockito.when(ConnectionFactory.getInstance()).thenReturn(mockConnectionFactory);
-
- DataSource mockDatasource = PowerMockito.mock(DataSource.class);
- PowerMockito.when(mockConnectionFactory.getDataSource()).thenReturn(mockDatasource);
- Connection mockConnection = PowerMockito.mock(Connection.class);
- PowerMockito.when(mockDatasource.getConnection()).thenReturn(mockConnection);
-
- DatabaseMetaData mockMetaData = PowerMockito.mock(DatabaseMetaData.class);
- PowerMockito.when(mockConnection.getMetaData()).thenReturn(mockMetaData);
- PowerMockito.when(mockMetaData.getDatabaseProductName()).thenReturn("mysql");
-
- UpgradeDao upgradeDao = MysqlUpgradeDao.getInstance();
- upgradeDao.initSchema();
- Assert.assertTrue(true);
-
- }
}
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinSchedulerTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinSchedulerTest.java
deleted file mode 100644
index 4c18760b70..0000000000
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/CreateDolphinSchedulerTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.dao.upgrade.shell;
-
-import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({DolphinSchedulerManager.class, CreateDolphinScheduler.class})
-public class CreateDolphinSchedulerTest {
-
- @Test
- public void mainTest() throws Exception {
- DolphinSchedulerManager mockManager = PowerMockito.mock(DolphinSchedulerManager.class);
- PowerMockito.whenNew(DolphinSchedulerManager.class).withNoArguments().thenReturn(mockManager);
- CreateDolphinScheduler.main(null);
- Assert.assertTrue(true);
- }
-}
\ No newline at end of file
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinSchedulerTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinSchedulerTest.java
deleted file mode 100644
index e3103c4a01..0000000000
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/shell/InitDolphinSchedulerTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.dao.upgrade.shell;
-
-import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({DolphinSchedulerManager.class, InitDolphinScheduler.class})
-public class InitDolphinSchedulerTest {
-
- @Test
- public void main() throws Exception {
- DolphinSchedulerManager mockManager = PowerMockito.mock(DolphinSchedulerManager.class);
- PowerMockito.whenNew(DolphinSchedulerManager.class).withNoArguments().thenReturn(mockManager);
- InitDolphinScheduler.main(null);
- Assert.assertTrue(true);
- }
-}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 1c054c414c..e698304dd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -910,8 +910,6 @@
**/dao/datasource/MySQLDataSourceTest.java
**/dao/entity/TaskInstanceTest.java
**/dao/entity/UdfFuncTest.java
- **/dao/upgrade/shell/CreateDolphinSchedulerTest.java
- **/dao/upgrade/shell/InitDolphinSchedulerTest.java
**/remote/command/alert/AlertSendRequestCommandTest.java
**/remote/command/alert/AlertSendResponseCommandTest.java
**/remote/command/future/ResponseFutureTest.java