This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new ef0cb46 Fix shell tools for database schema cannot run (#7003)
ef0cb46 is described below
commit ef0cb466619621556d9f2e886d55707f0b0b8a8e
Author: kezhenxu94 <[email protected]>
AuthorDate: Fri Nov 26 11:10:38 2021 +0800
Fix shell tools for database schema cannot run (#7003)
---
docker/build/startup-init-conf.sh | 11 +-
.../common/utils/SchemaUtilsTest.java | 119 ------------
dolphinscheduler-dao/pom.xml | 15 ++
.../dao/datasource/ConnectionFactory.java | 140 ---------------
.../dao/datasource/SpringConnectionFactory.java | 23 +--
.../dao/upgrade/DolphinSchedulerManager.java | 90 ++++------
.../dao/upgrade/MysqlUpgradeDao.java | 36 ++--
.../dao/upgrade/PostgresqlUpgradeDao.java | 66 ++++---
.../dolphinscheduler/dao/upgrade}/SchemaUtils.java | 70 +++-----
.../dolphinscheduler/dao/upgrade/UpgradeDao.java | 199 +++------------------
.../dao/upgrade/shell/CreateDolphinScheduler.java | 60 ++++---
.../dao/upgrade/shell/InitDolphinScheduler.java | 49 +++--
.../dao/upgrade/shell/UpgradeDolphinScheduler.java | 56 +++---
.../postgresql/dolphinscheduler_ddl.sql | 2 +
.../postgresql/dolphinscheduler_ddl_post.sql | 3 +-
.../apache/dolphinscheduler/dao/BaseDaoTest.java | 3 -
.../dao/mapper/ConnectionFactoryTest.java | 39 ----
.../dao/upgrade/ProcessDefinitionDaoTest.java | 15 +-
.../dao/upgrade/SchemaUtilsTest.java | 60 +++++++
.../dao/upgrade/UpgradeDaoTest.java | 40 -----
.../dao/upgrade/WorkerGroupDaoTest.java | 10 +-
.../src/main/assembly/dolphinscheduler-bin.xml | 2 +-
.../resources/docker/tenant/docker-compose.yaml | 2 +
script/create-dolphinscheduler.sh | 6 +-
script/dolphinscheduler-daemon.sh | 12 +-
script/upgrade-dolphinscheduler.sh | 6 +-
26 files changed, 348 insertions(+), 786 deletions(-)
diff --git a/docker/build/startup-init-conf.sh
b/docker/build/startup-init-conf.sh
index 23f5cff..8b1e381 100755
--- a/docker/build/startup-init-conf.sh
+++ b/docker/build/startup-init-conf.sh
@@ -26,13 +26,10 @@ echo "init env variables"
# Database
#============================================================================
export DATABASE_TYPE=${DATABASE_TYPE:-"postgresql"}
-export DATABASE_DRIVER=${DATABASE_DRIVER:-"org.postgresql.Driver"}
-export DATABASE_HOST=${DATABASE_HOST:-"127.0.0.1"}
-export DATABASE_PORT=${DATABASE_PORT:-"5432"}
-export DATABASE_USERNAME=${DATABASE_USERNAME:-"root"}
-export DATABASE_PASSWORD=${DATABASE_PASSWORD:-"root"}
-export DATABASE_DATABASE=${DATABASE_DATABASE:-"dolphinscheduler"}
-export DATABASE_PARAMS=${DATABASE_PARAMS:-"characterEncoding=utf8"}
+
+# export
SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-"jdbc:postgresql://localhost:5432/dolphinscheduler}
+# export SPRING_DATASOURCE_USERNAME=${DATABASE_USERNAME:-"root"}
+# export SPRING_DATASOURCE_PASSWORD=${DATABASE_PASSWORD:-"root"}
#============================================================================
# Registry
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
deleted file mode 100644
index 72641cc..0000000
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
+++ /dev/null
@@ -1,119 +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.common.utils;
-
-import static org.apache.commons.collections.CollectionUtils.isEqualCollection;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-
-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;
-import org.slf4j.LoggerFactory;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ LoggerFactory.class, FileUtils.class })
-public class SchemaUtilsTest {
-
- @Test
- public void testReplaceBlank() {
- Assert.assertEquals("abc", SchemaUtils.replaceBlank(" abc"));
- Assert.assertEquals("abc", SchemaUtils.replaceBlank("abc "));
- Assert.assertEquals("abc", SchemaUtils.replaceBlank("a b c"));
- Assert.assertEquals("abc", SchemaUtils.replaceBlank("a b c"));
- Assert.assertEquals("", SchemaUtils.replaceBlank(" "));
- Assert.assertEquals("", SchemaUtils.replaceBlank(null));
- Assert.assertEquals("我怕的你", SchemaUtils.replaceBlank("我怕的 你"));
- }
-
- @Test
- public void testGetSoftVersion() {
- // file not found
- try {
- SchemaUtils.getSoftVersion();
- } catch (RuntimeException e) {
- Assert.assertEquals("Failed to get the product version description
file. The file could not be found",
- e.getMessage());
- }
-
- // file exists, fmt is invalid
- FileUtils.writeContent2File("32432423", "sql/soft_version");
- Assert.assertEquals("32432423", SchemaUtils.getSoftVersion());
- }
-
- @Test
- public void testIsAGreatVersion() {
- // param is null
- try {
- SchemaUtils.isAGreatVersion(null, null);
- } catch (RuntimeException e) {
- Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
- }
-
- // param is ""
- try {
- SchemaUtils.isAGreatVersion("", "");
- } catch (RuntimeException e) {
- Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
- }
- Assert.assertFalse(SchemaUtils.isAGreatVersion("1", "1"));
- Assert.assertTrue(SchemaUtils.isAGreatVersion("2", "1"));
- Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1"));
- Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1.0.1"));
- Assert.assertFalse(SchemaUtils.isAGreatVersion("1.1", "1.2"));
- Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1.1", "1.1"));
- Assert.assertTrue(SchemaUtils.isAGreatVersion("10.1.1", "1.01.100"));
- try {
- SchemaUtils.isAGreatVersion("10.1.1", ".1");
- } catch (Exception e) {
- Assert.assertNotNull(e);
- }
- try {
- SchemaUtils.isAGreatVersion("a.1.1", "b.1");
- } catch (Exception e) {
- Assert.assertNotNull(e);
- }
- }
-
- @Test
- public void testGetAllSchemaList() {
- //normal
- PowerMockito.mockStatic(FileUtils.class);
- File[] files = new File[4];
- files[0] = new File("sql/upgrade/1.2.0_schema");
- files[1] = new File("sql/upgrade/1.0.1_schema");
- files[2] = new File("sql/upgrade/1.0.2_schema");
- files[3] = new File("sql/upgrade/1.1.0_schema");
-
PowerMockito.when(FileUtils.getAllDir("sql/upgrade")).thenReturn(files);
- List<String> real = SchemaUtils.getAllSchemaList();
- List<String> expect = Arrays.asList("1.0.1_schema", "1.0.2_schema",
- "1.1.0_schema", "1.2.0_schema");
- boolean result = isEqualCollection(real, expect);
- Assert.assertTrue(result);
-
- //normal
- files = new File[0];
-
PowerMockito.when(FileUtils.getAllDir("sql/upgrade")).thenReturn(files);
- real = SchemaUtils.getAllSchemaList();
- Assert.assertNull(real);
- }
-}
diff --git a/dolphinscheduler-dao/pom.xml b/dolphinscheduler-dao/pom.xml
index c603207..d3b1639 100644
--- a/dolphinscheduler-dao/pom.xml
+++ b/dolphinscheduler-dao/pom.xml
@@ -115,4 +115,19 @@
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>sql/</exclude>
+ <exclude>*.yaml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/ConnectionFactory.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/ConnectionFactory.java
deleted file mode 100644
index 3ffb796..0000000
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/ConnectionFactory.java
+++ /dev/null
@@ -1,140 +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.datasource;
-
-import org.apache.ibatis.mapping.Environment;
-import org.apache.ibatis.session.SqlSession;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.transaction.TransactionFactory;
-import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
-
-import java.sql.SQLException;
-
-import javax.sql.DataSource;
-
-import org.mybatis.spring.SqlSessionTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Bean;
-
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
-import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-
-/**
- * not spring manager connection, only use for init db, and alert module for
non-spring application
- * data source connection factory
- */
-public class ConnectionFactory extends SpringConnectionFactory {
-
- private static final Logger logger =
LoggerFactory.getLogger(ConnectionFactory.class);
-
- private static class ConnectionFactoryHolder {
- private static final ConnectionFactory connectionFactory = new
ConnectionFactory();
- }
-
- public static ConnectionFactory getInstance() {
- return ConnectionFactoryHolder.connectionFactory;
- }
-
- private ConnectionFactory() {
- try {
- sqlSessionFactory = getSqlSessionFactory();
- sqlSessionTemplate = getSqlSessionTemplate();
- } catch (Exception e) {
- logger.error("Initializing ConnectionFactory error", e);
- throw new RuntimeException(e);
- }
- }
-
- /**
- * sql session factory
- */
- private SqlSessionFactory sqlSessionFactory;
-
- /**
- * sql session template
- */
- private SqlSessionTemplate sqlSessionTemplate;
-
- private DataSource dataSource;
-
- // TODO remove
- public DataSource getDataSource() {
- return dataSource;
- }
-
- /**
- * * get sql session factory
- *
- * @return sqlSessionFactory
- * @throws Exception sqlSessionFactory exception
- */
- @Bean
- public SqlSessionFactory getSqlSessionFactory() throws Exception {
- TransactionFactory transactionFactory = new JdbcTransactionFactory();
-
- Environment environment = new Environment("development",
transactionFactory, getDataSource());
-
- MybatisConfiguration configuration = new MybatisConfiguration();
- configuration.setEnvironment(environment);
- configuration.setLazyLoadingEnabled(true);
- configuration.addMappers("org.apache.dolphinscheduler.dao.mapper");
- configuration.addInterceptor(new PaginationInterceptor());
-
- MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new
MybatisSqlSessionFactoryBean();
- sqlSessionFactoryBean.setConfiguration(configuration);
- sqlSessionFactoryBean.setDataSource(getDataSource());
-
-
sqlSessionFactoryBean.setTypeEnumsPackage("org.apache.dolphinscheduler.*.enums");
- sqlSessionFactory = sqlSessionFactoryBean.getObject();
-
- return sqlSessionFactory;
- }
-
- private SqlSessionTemplate getSqlSessionTemplate() {
- sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
- return sqlSessionTemplate;
- }
-
- /**
- * get sql session
- *
- * @return sqlSession
- */
- public SqlSession getSqlSession() {
- return sqlSessionTemplate;
- }
-
- /**
- * get mapper
- *
- * @param type target class
- * @param <T> generic
- * @return target object
- */
- public <T> T getMapper(Class<T> type) {
- try {
- return getSqlSession().getMapper(type);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- throw new RuntimeException("get mapper failed");
- }
- }
-
-}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
index 1a7812c..4a11692 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
@@ -42,32 +42,16 @@ import
com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
@Configuration
public class SpringConnectionFactory {
- /**
- * pagination interceptor
- *
- * @return pagination interceptor
- */
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
- /**
- * * get transaction manager
- *
- * @return DataSourceTransactionManager
- */
@Bean
public DataSourceTransactionManager transactionManager(DataSource
dataSource) {
return new DataSourceTransactionManager(dataSource);
}
- /**
- * * get sql session factory
- *
- * @return sqlSessionFactory
- * @throws Exception sqlSessionFactory exception
- */
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws
Exception {
MybatisConfiguration configuration = new MybatisConfiguration();
@@ -76,6 +60,7 @@ public class SpringConnectionFactory {
configuration.setCallSettersOnNulls(true);
configuration.setJdbcTypeForNull(JdbcType.NULL);
configuration.addInterceptor(paginationInterceptor());
+ configuration.setGlobalConfig(new GlobalConfig().setBanner(false));
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new
MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setConfiguration(configuration);
sqlSessionFactoryBean.setDataSource(dataSource);
@@ -93,11 +78,6 @@ public class SpringConnectionFactory {
return sqlSessionFactoryBean.getObject();
}
- /**
- * get sql session
- *
- * @return SqlSession
- */
@Bean
public SqlSession sqlSession(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
@@ -113,5 +93,4 @@ public class SpringConnectionFactory {
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
-
}
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 86709f3..5c3af46 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
@@ -17,102 +17,84 @@
package org.apache.dolphinscheduler.dao.upgrade;
-import org.apache.dolphinscheduler.common.utils.SchemaUtils;
import org.apache.dolphinscheduler.spi.enums.DbType;
+import java.io.IOException;
+import java.sql.Connection;
import java.util.List;
+import javax.sql.DataSource;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Service;
-/**
- * upgrade manager
- */
+@Service
+@Profile("shell-cli")
public class DolphinSchedulerManager {
private static final Logger logger =
LoggerFactory.getLogger(DolphinSchedulerManager.class);
- UpgradeDao upgradeDao;
- /**
- * init upgrade dao
- */
- private void initUpgradeDao() {
- DbType dbType = UpgradeDao.getDbType();
- if (dbType != null) {
- switch (dbType) {
- case MYSQL:
- upgradeDao = MysqlUpgradeDao.getInstance();
- break;
- case POSTGRESQL:
- upgradeDao = PostgresqlUpgradeDao.getInstance();
- break;
- default:
- logger.error("not support sql type: {},can't upgrade",
dbType);
- throw new IllegalArgumentException("not support sql
type,can't upgrade");
- }
- }
+ private final UpgradeDao upgradeDao;
+
+ public DolphinSchedulerManager(DataSource dataSource, List<UpgradeDao>
daos) throws Exception {
+ final DbType type = getCurrentDbType(dataSource);
+ upgradeDao = daos.stream()
+ .filter(it -> it.getDbType() == type)
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException(
+ "Cannot find UpgradeDao implementation for db
type: " + type
+ ));
}
- /**
- * constructor init
- */
- public DolphinSchedulerManager() {
- initUpgradeDao();
+ private DbType getCurrentDbType(DataSource dataSource) throws Exception {
+ try (Connection conn = dataSource.getConnection()) {
+ String name =
conn.getMetaData().getDatabaseProductName().toUpperCase();
+ return DbType.valueOf(name);
+ }
}
- /**
- * init DolphinScheduler
- */
public void initDolphinScheduler() {
// 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")) {
+ 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;
}
this.initDolphinSchedulerSchema();
}
- /**
- * init DolphinScheduler Schema
- */
public void initDolphinSchedulerSchema() {
-
logger.info("Start initializing the DolphinScheduler manager table
structure");
upgradeDao.initSchema();
}
-
- /**
- * upgrade DolphinScheduler
- */
- public void upgradeDolphinScheduler() {
-
+ public void upgradeDolphinScheduler() throws IOException {
// Gets a list of all upgrades
List<String> schemaList = SchemaUtils.getAllSchemaList();
- if(schemaList == null || schemaList.size() == 0) {
+ if (schemaList == null || schemaList.size() == 0) {
logger.info("There is no schema to upgrade!");
- }else {
-
- String version = "";
+ } else {
+ String version;
// Gets the version of the current system
if (upgradeDao.isExistsTable("t_escheduler_version")) {
version = upgradeDao.getCurrentVersion("t_escheduler_version");
- }else if(upgradeDao.isExistsTable("t_ds_version")){
+ } else if (upgradeDao.isExistsTable("t_ds_version")) {
version = upgradeDao.getCurrentVersion("t_ds_version");
- }else
if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){
+ } else if (upgradeDao.isExistsColumn("t_escheduler_queue",
"create_time")) {
version = "1.0.1";
- }else if(upgradeDao.isExistsTable("t_escheduler_queue")){
+ } else if (upgradeDao.isExistsTable("t_escheduler_queue")) {
version = "1.0.0";
- }else{
+ } else {
logger.error("Unable to determine current software version, so
cannot upgrade");
throw new RuntimeException("Unable to determine current
software version, so cannot upgrade");
}
// The target version of the upgrade
String schemaVersion = "";
- for(String schemaDir : schemaList) {
+ for (String schemaDir : schemaList) {
schemaVersion = schemaDir.split("_")[0];
- if(SchemaUtils.isAGreatVersion(schemaVersion , version)) {
+ if (SchemaUtils.isAGreatVersion(schemaVersion, version)) {
logger.info("upgrade DolphinScheduler metadata version
from {} to {}", version, schemaVersion);
logger.info("Begin upgrading DolphinScheduler's table
structure");
upgradeDao.upgradeDolphinScheduler(schemaDir);
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/MysqlUpgradeDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/MysqlUpgradeDao.java
index 8d92b90..b83809d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/MysqlUpgradeDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/MysqlUpgradeDao.java
@@ -17,38 +17,38 @@
package org.apache.dolphinscheduler.dao.upgrade;
import org.apache.dolphinscheduler.common.utils.ConnectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.dolphinscheduler.spi.enums.DbType;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-/**
- * mysql upgrade dao
- */
-public class MysqlUpgradeDao extends UpgradeDao {
+import javax.sql.DataSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Service;
+
+@Service
+@Profile("shell-cli")
+public class MysqlUpgradeDao extends UpgradeDao {
public static final Logger logger =
LoggerFactory.getLogger(MysqlUpgradeDao.class);
- /**
- * mysql upgrade dao holder
- */
- private static class MysqlUpgradeDaoHolder {
- private static final MysqlUpgradeDao INSTANCE = new MysqlUpgradeDao();
+ private MysqlUpgradeDao(DataSource dataSource) {
+ super(dataSource);
}
- /**
- * mysql upgrade dao constructor
- */
- private MysqlUpgradeDao() {
+ @Override
+ protected String initSqlPath() {
+ return "create/release-1.0.0_schema/mysql";
}
- public static final MysqlUpgradeDao getInstance() {
- return MysqlUpgradeDaoHolder.INSTANCE;
+ @Override
+ protected DbType getDbType() {
+ return DbType.MYSQL;
}
-
/**
* determines whether a table exists
* @param tableName tableName
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/PostgresqlUpgradeDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/PostgresqlUpgradeDao.java
index 2caf54b..97da39a 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/PostgresqlUpgradeDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/PostgresqlUpgradeDao.java
@@ -17,44 +17,40 @@
package org.apache.dolphinscheduler.dao.upgrade;
import org.apache.dolphinscheduler.common.utils.ConnectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.dolphinscheduler.spi.enums.DbType;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-/**
- * postgresql upgrade dao
- */
-public class PostgresqlUpgradeDao extends UpgradeDao {
+import javax.sql.DataSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Service;
+
+@Service
+@Profile("shell-cli")
+public class PostgresqlUpgradeDao extends UpgradeDao {
public static final Logger logger =
LoggerFactory.getLogger(PostgresqlUpgradeDao.class);
- private static final String SCHEMA = getSchema();
- /**
- * postgresql upgrade dao holder
- */
- private static class PostgresqlUpgradeDaoHolder {
- private static final PostgresqlUpgradeDao INSTANCE = new
PostgresqlUpgradeDao();
+ private PostgresqlUpgradeDao(DataSource dataSource) {
+ super(dataSource);
}
- /**
- * PostgresqlUpgradeDao Constructor
- */
- private PostgresqlUpgradeDao() {
+ @Override
+ protected String initSqlPath() {
+ return "create/release-1.2.0_schema/postgresql";
}
- public static final PostgresqlUpgradeDao getInstance() {
- return PostgresqlUpgradeDaoHolder.INSTANCE;
+ @Override
+ protected DbType getDbType() {
+ return DbType.POSTGRESQL;
}
- /**
- * getSchema
- * @return schema
- */
- public static String getSchema(){
+ public String getSchema() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
@@ -62,14 +58,14 @@ public class PostgresqlUpgradeDao extends UpgradeDao {
conn = dataSource.getConnection();
pstmt = conn.prepareStatement("select current_schema()");
resultSet = pstmt.executeQuery();
- while (resultSet.next()){
- if(resultSet.isFirst()){
+ while (resultSet.next()) {
+ if (resultSet.isFirst()) {
return resultSet.getString(1);
}
}
} catch (SQLException e) {
- logger.error(e.getMessage(),e);
+ logger.error(e.getMessage(), e);
} finally {
ConnectionUtils.releaseResource(resultSet, pstmt, conn);
}
@@ -79,6 +75,7 @@ public class PostgresqlUpgradeDao extends UpgradeDao {
/**
* determines whether a table exists
+ *
* @param tableName tableName
* @return if table exist return true,else return false
*/
@@ -89,12 +86,12 @@ public class PostgresqlUpgradeDao extends UpgradeDao {
try {
conn = dataSource.getConnection();
- rs = conn.getMetaData().getTables(conn.getCatalog(), SCHEMA,
tableName, null);
+ rs = conn.getMetaData().getTables(conn.getCatalog(), getSchema(),
tableName, null);
return rs.next();
} catch (SQLException e) {
- logger.error(e.getMessage(),e);
- throw new RuntimeException(e.getMessage(),e);
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
} finally {
ConnectionUtils.releaseResource(rs, conn);
}
@@ -103,21 +100,22 @@ public class PostgresqlUpgradeDao extends UpgradeDao {
/**
* determines whether a field exists in the specified table
+ *
* @param tableName tableName
* @param columnName columnName
- * @return if column name exist return true,else return false
+ * @return if column name exist return true,else return false
*/
@Override
- public boolean isExistsColumn(String tableName,String columnName) {
+ public boolean isExistsColumn(String tableName, String columnName) {
Connection conn = null;
ResultSet rs = null;
try {
conn = dataSource.getConnection();
- rs = conn.getMetaData().getColumns(conn.getCatalog(),
SCHEMA,tableName,columnName);
+ rs = conn.getMetaData().getColumns(conn.getCatalog(), getSchema(),
tableName, columnName);
return rs.next();
} catch (SQLException e) {
- logger.error(e.getMessage(),e);
- throw new RuntimeException(e.getMessage(),e);
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
} finally {
ConnectionUtils.releaseResource(rs, conn);
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtils.java
similarity index 69%
rename from
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
rename to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtils.java
index 503cf82..bf6dc9a 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtils.java
@@ -15,55 +15,48 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.common.utils;
+package org.apache.dolphinscheduler.dao.upgrade;
+
+import org.apache.dolphinscheduler.common.utils.FileUtils;
import org.apache.commons.lang.StringUtils;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.util.ArrayList;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+
+import com.google.common.base.Strings;
/**
* Metadata related common classes
*/
public class SchemaUtils {
-
private static final Logger logger =
LoggerFactory.getLogger(SchemaUtils.class);
- private static final Pattern p = Pattern.compile("\\s*|\t|\r|\n");
private SchemaUtils() {
throw new UnsupportedOperationException("Construct SchemaUtils");
}
- /**
- * Gets upgradable schemas for all upgrade directories
- *
- * @return all schema list
- */
- public static List<String> getAllSchemaList() {
- List<String> schemaDirList = new ArrayList<>();
- File[] schemaDirArr = FileUtils.getAllDir("sql/upgrade");
- if (schemaDirArr == null || schemaDirArr.length == 0) {
- return null;
- }
+ public static List<String> getAllSchemaList() throws IOException {
+ final File[] schemaDirArr = new
ClassPathResource("sql/upgrade").getFile().listFiles();
- for (File file : schemaDirArr) {
- schemaDirList.add(file.getName());
+ if (schemaDirArr == null || schemaDirArr.length == 0) {
+ return Collections.emptyList();
}
- schemaDirList.sort((o1, o2) -> {
+ return Arrays.stream(schemaDirArr).map(File::getName).sorted((o1, o2)
-> {
try {
- String dir1 = String.valueOf(o1);
- String dir2 = String.valueOf(o2);
- String version1 = dir1.split("_")[0];
- String version2 = dir2.split("_")[0];
+ String version1 = o1.split("_")[0];
+ String version2 = o2.split("_")[0];
+
if (version1.equals(version2)) {
return 0;
}
@@ -73,14 +66,11 @@ public class SchemaUtils {
}
return -1;
-
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new RuntimeException(e);
}
- });
-
- return schemaDirList;
+ }).collect(Collectors.toList());
}
/**
@@ -115,11 +105,12 @@ public class SchemaUtils {
*
* @return current software version
*/
- public static String getSoftVersion() {
+ public static String getSoftVersion() throws IOException {
+ final ClassPathResource softVersionFile = new
ClassPathResource("sql/soft_version");
String softVersion;
try {
- softVersion = FileUtils.readFile2Str(new
FileInputStream("sql/soft_version"));
- softVersion = replaceBlank(softVersion);
+ softVersion =
FileUtils.readFile2Str(softVersionFile.getInputStream());
+ softVersion =
Strings.nullToEmpty(softVersion).replaceAll("\\s+|\r|\n", "");
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
throw new RuntimeException("Failed to get the product version
description file. The file could not be found", e);
@@ -127,19 +118,4 @@ public class SchemaUtils {
return softVersion;
}
- /**
- * Strips the string of space carriage returns and tabs
- *
- * @param str string
- * @return string removed blank
- */
- public static String replaceBlank(String str) {
- String dest = "";
- if (str != null) {
-
- Matcher m = p.matcher(str);
- dest = m.replaceAll("");
- }
- return dest;
- }
}
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 7d74469..bbbd1bd 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
@@ -28,9 +28,7 @@ import
org.apache.dolphinscheduler.common.task.TaskTimeoutParameter;
import org.apache.dolphinscheduler.common.utils.CodeGenerateUtils;
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.dao.datasource.ConnectionFactory;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog;
import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog;
@@ -40,16 +38,14 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
-import java.io.File;
import java.io.FileNotFoundException;
-import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -62,6 +58,8 @@ import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
@@ -70,102 +68,38 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
public abstract class UpgradeDao {
-
public static final Logger logger =
LoggerFactory.getLogger(UpgradeDao.class);
private static final String T_VERSION_NAME = "t_escheduler_version";
private static final String T_NEW_VERSION_NAME = "t_ds_version";
- private static final String rootDir = System.getProperty("user.dir");
- protected static final DataSource dataSource = getDataSource();
- private static final DbType dbType = getCurrentDbType();
- public static DataSource getDataSource(){
- return ConnectionFactory.getInstance().getDataSource();
- }
+ protected final DataSource dataSource;
- /**
- * get db type
- * @return dbType
- */
- public static DbType getDbType(){
- return dbType;
+ protected UpgradeDao(DataSource dataSource) {
+ this.dataSource = dataSource;
}
- /**
- * get current dbType
- * @return
- */
- private static DbType getCurrentDbType(){
- Connection conn = null;
- try {
- conn = dataSource.getConnection();
- String name =
conn.getMetaData().getDatabaseProductName().toUpperCase();
- return DbType.valueOf(name);
- } catch (Exception e) {
- logger.error(e.getMessage(),e);
- return null;
- }finally {
- ConnectionUtils.releaseResource(conn);
- }
- }
+ protected abstract String initSqlPath();
- /**
- * init schema
- */
- public void initSchema() {
- DbType dbType = getDbType();
- String initSqlPath = "";
- if (dbType != null) {
- switch (dbType) {
- case MYSQL:
- initSqlPath = "/sql/create/release-1.0.0_schema/mysql/";
- initSchema(initSqlPath);
- break;
- case POSTGRESQL:
- 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) {
+ protected abstract DbType getDbType();
+ public void initSchema() {
// Execute the dolphinscheduler DDL, it cannot be rolled back
- runInitDDL(initSqlPath);
+ runInitDDL();
// Execute the dolphinscheduler DML, it can be rolled back
- runInitDML(initSqlPath);
-
-
+ runInitDML();
}
- /**
- * run DML
- *
- * @param initSqlPath initSqlPath
- */
- private void runInitDML(String initSqlPath) {
+ private void runInitDML() {
+ Resource mysqlSQLFilePath = new ClassPathResource("sql/" +
initSqlPath() + "/dolphinscheduler_dml.sql");
Connection conn = null;
- if (StringUtils.isEmpty(rootDir)) {
- throw new RuntimeException("Environment variable user.dir not
found");
- }
- 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(mysqlSQLFilePath);
+ Reader initSqlReader = new
InputStreamReader(mysqlSQLFilePath.getInputStream());
initScriptRunner.runScript(initSqlReader);
conn.commit();
@@ -189,68 +123,27 @@ public abstract class UpgradeDao {
throw new RuntimeException(e.getMessage(), e);
} finally {
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 + initSqlPath +
"dolphinscheduler_ddl.sql";
- try {
- conn = dataSource.getConnection();
+ private void runInitDDL() {
+ Resource mysqlSQLFilePath = new ClassPathResource("sql/" +
initSqlPath() + "/dolphinscheduler_ddl.sql");
+ 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);
- Reader initSqlReader = new FileReader(mysqlSQLFilePath);
+ Reader initSqlReader = new
InputStreamReader(mysqlSQLFilePath.getInputStream());
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);
-
}
-
}
- /**
- * determines whether a table exists
- *
- * @param tableName tableName
- * @return if table exist return true,else return false
- */
public abstract boolean isExistsTable(String tableName);
- /**
- * determines whether a field exists in the specified table
- *
- * @param tableName tableName
- * @param columnName columnName
- * @return if column name exist return true,else return false
- */
public abstract boolean isExistsColumn(String tableName, String
columnName);
-
- /**
- * get current version
- *
- * @param versionName versionName
- * @return version
- */
public String getCurrentVersion(String versionName) {
String sql = String.format("select version from %s", versionName);
Connection conn = null;
@@ -276,18 +169,11 @@ public abstract class UpgradeDao {
}
}
-
- /**
- * upgrade DolphinScheduler
- *
- * @param schemaDir schema dir
- */
public void upgradeDolphinScheduler(String schemaDir) {
upgradeDolphinSchedulerDDL(schemaDir, "dolphinscheduler_ddl.sql");
upgradeDolphinSchedulerDML(schemaDir);
}
-
/**
* upgrade DolphinScheduler worker group
* ds-1.3.0 modify the worker group for process definition json
@@ -330,7 +216,7 @@ public abstract class UpgradeDao {
for (int i = 0; i < tasks.size(); i++) {
ObjectNode task = (ObjectNode) tasks.path(i);
ObjectNode workerGroupNode = (ObjectNode)
task.path("workerGroupId");
- Integer workerGroupId = -1;
+ int workerGroupId = -1;
if (workerGroupNode != null &&
workerGroupNode.canConvertToInt()) {
workerGroupId = workerGroupNode.asInt(-1);
}
@@ -355,9 +241,6 @@ public abstract class UpgradeDao {
}
}
- /**
- * updateProcessDefinitionJsonResourceList
- */
protected void updateProcessDefinitionJsonResourceList() {
ResourceDao resourceDao = new ResourceDao();
ProcessDefinitionDao processDefinitionDao = new ProcessDefinitionDao();
@@ -415,17 +298,9 @@ public abstract class UpgradeDao {
}
- /**
- * upgradeDolphinScheduler DML
- *
- * @param schemaDir schemaDir
- */
private void upgradeDolphinSchedulerDML(String schemaDir) {
String schemaVersion = schemaDir.split("_")[0];
- if (StringUtils.isEmpty(rootDir)) {
- throw new RuntimeException("Environment variable user.dir not
found");
- }
- String sqlFilePath =
MessageFormat.format("{0}/sql/upgrade/{1}/{2}/dolphinscheduler_dml.sql",
rootDir, schemaDir, getDbType().name().toLowerCase());
+ Resource sqlFilePath = new
ClassPathResource(String.format("sql/upgrade/%s/%s/dolphinscheduler_dml.sql",
schemaDir, getDbType().name().toLowerCase()));
logger.info("sqlSQLFilePath" + sqlFilePath);
Connection conn = null;
PreparedStatement pstmt = null;
@@ -434,7 +309,7 @@ public abstract class UpgradeDao {
conn.setAutoCommit(false);
// Execute the upgraded dolphinscheduler dml
ScriptRunner scriptRunner = new ScriptRunner(conn, false, true);
- Reader sqlReader = new FileReader(new File(sqlFilePath));
+ Reader sqlReader = new
InputStreamReader(sqlFilePath.getInputStream());
scriptRunner.runScript(sqlReader);
if (isExistsTable(T_VERSION_NAME)) {
// Change version in the version table to the new version
@@ -466,16 +341,6 @@ public abstract class UpgradeDao {
}
logger.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
- } catch (SQLException 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);
} catch (Exception e) {
try {
if (null != conn) {
@@ -498,10 +363,7 @@ public abstract class UpgradeDao {
* @param schemaDir schemaDir
*/
private void upgradeDolphinSchedulerDDL(String schemaDir, String
scriptFile) {
- if (StringUtils.isEmpty(rootDir)) {
- throw new RuntimeException("Environment variable user.dir not
found");
- }
- String sqlFilePath =
MessageFormat.format("{0}/sql/upgrade/{1}/{2}/{3}", rootDir, schemaDir,
getDbType().name().toLowerCase(), scriptFile);
+ Resource sqlFilePath = new
ClassPathResource(String.format("sql/upgrade/%s/%s/%s", schemaDir,
getDbType().name().toLowerCase(), scriptFile));
Connection conn = null;
PreparedStatement pstmt = null;
try {
@@ -511,23 +373,14 @@ public abstract class UpgradeDao {
conn.setAutoCommit(true);
// Execute the dolphinscheduler ddl.sql for the upgrade
ScriptRunner scriptRunner = new ScriptRunner(conn, true, true);
- Reader sqlReader = new FileReader(new File(sqlFilePath));
+ Reader sqlReader = new
InputStreamReader(sqlFilePath.getInputStream());
scriptRunner.runScript(sqlReader);
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
throw new RuntimeException("sql file not found ", e);
- } catch (IOException e) {
-
- logger.error(e.getMessage(), e);
- throw new RuntimeException(e.getMessage(), e);
- } catch (SQLException 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 {
@@ -612,7 +465,7 @@ public abstract class UpgradeDao {
List<TaskDefinitionLog>
taskDefinitionLogs,
Map<Integer, Map<Long, Map<String,
Long>>> processTaskMap) throws Exception {
Map<Integer, ProcessDefinition> processDefinitionMap =
processDefinitions.stream()
- .collect(Collectors.toMap(ProcessDefinition::getId,
processDefinition -> processDefinition));
+
.collect(Collectors.toMap(ProcessDefinition::getId, processDefinition ->
processDefinition));
Date now = new Date();
for (Map.Entry<Integer, String> entry :
processDefinitionJsonMap.entrySet()) {
if (entry.getValue() == null) {
@@ -763,8 +616,8 @@ public abstract class UpgradeDao {
}
public void convertDependence(List<TaskDefinitionLog> taskDefinitionLogs,
- Map<Integer, Long> projectIdCodeMap,
- Map<Integer, Map<Long, Map<String, Long>>>
processTaskMap) {
+ Map<Integer, Long> projectIdCodeMap,
+ Map<Integer, Map<Long, Map<String, Long>>>
processTaskMap) {
for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs) {
if
(TaskType.DEPENDENT.getDesc().equals(taskDefinitionLog.getTaskType())) {
ObjectNode taskParams =
JSONUtils.parseObject(taskDefinitionLog.getTaskParams());
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 14eceff..d1ac2e2 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
@@ -18,32 +18,46 @@
package org.apache.dolphinscheduler.dao.upgrade.shell;
import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
-/**
- * create DolphinScheduler
- *
- */
+@ComponentScan(value = "org.apache.dolphinscheduler.dao")
+@EnableAutoConfiguration(exclude = {QuartzAutoConfiguration.class})
public class CreateDolphinScheduler {
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(CreateDolphinScheduler.class)
+ .profiles("shell-create", "shell-cli")
+ .web(WebApplicationType.NONE)
+ .run(args);
+ }
+
+ @Component
+ @Profile("shell-create")
+ static class CreateRunner implements CommandLineRunner {
+ private static final Logger logger =
LoggerFactory.getLogger(CreateRunner.class);
+
+ private final DolphinSchedulerManager dolphinSchedulerManager;
+
+ CreateRunner(DolphinSchedulerManager dolphinSchedulerManager) {
+ this.dolphinSchedulerManager = dolphinSchedulerManager;
+ }
- 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 {
- 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);
- }
-
- }
+ @Override
+ public void run(String... args) throws Exception {
+ dolphinSchedulerManager.initDolphinScheduler();
+ logger.info("init DolphinScheduler finished");
+ dolphinSchedulerManager.upgradeDolphinScheduler();
+ logger.info("upgrade DolphinScheduler finished");
+ logger.info("create DolphinScheduler success");
+ }
+ }
}
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 3bcb3ab..261b988 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
@@ -17,26 +17,43 @@
package org.apache.dolphinscheduler.dao.upgrade.shell;
import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
-/**
- * init DolphinScheduler
- *
- */
+@ComponentScan(value = "org.apache.dolphinscheduler.dao")
+@EnableAutoConfiguration(exclude = {QuartzAutoConfiguration.class})
public class InitDolphinScheduler {
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(InitDolphinScheduler.class)
+ .profiles("shell-init", "shell-cli")
+ .web(WebApplicationType.NONE)
+ .run(args);
+ }
+
+ @Component
+ @Profile("shell-init")
+ static class InitRunner implements CommandLineRunner {
+ private static final Logger logger =
LoggerFactory.getLogger(InitRunner.class);
+
+ private final DolphinSchedulerManager dolphinSchedulerManager;
- private static final Logger logger =
LoggerFactory.getLogger(InitDolphinScheduler.class);
+ InitRunner(DolphinSchedulerManager dolphinSchedulerManager) {
+ this.dolphinSchedulerManager = dolphinSchedulerManager;
+ }
- /**
- * init dolphin scheduler db
- * @param args args
- */
- public static void main(String[] args) {
- Thread.currentThread().setName("manager-InitDolphinScheduler");
- DolphinSchedulerManager dolphinSchedulerManager = new
DolphinSchedulerManager();
- dolphinSchedulerManager.initDolphinScheduler();
- logger.info("init DolphinScheduler finished");
-
- }
+ @Override
+ public void run(String... args) throws Exception {
+ dolphinSchedulerManager.initDolphinScheduler();
+ logger.info("init DolphinScheduler finished");
+ }
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/UpgradeDolphinScheduler.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/UpgradeDolphinScheduler.java
index 293b555..427f2f5 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/UpgradeDolphinScheduler.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/upgrade/shell/UpgradeDolphinScheduler.java
@@ -17,31 +17,43 @@
package org.apache.dolphinscheduler.dao.upgrade.shell;
import org.apache.dolphinscheduler.dao.upgrade.DolphinSchedulerManager;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
-/**
- * upgrade DolphinScheduler
- */
+@ComponentScan(value = "org.apache.dolphinscheduler.dao")
+@EnableAutoConfiguration(exclude = {QuartzAutoConfiguration.class})
public class UpgradeDolphinScheduler {
- private static final Logger logger =
LoggerFactory.getLogger(UpgradeDolphinScheduler.class);
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(UpgradeDolphinScheduler.class)
+ .profiles("shell-upgrade", "shell-cli")
+ .web(WebApplicationType.NONE)
+ .run(args);
+ }
+
+ @Component
+ @Profile("shell-upgrade")
+ static class UpgradeRunner implements CommandLineRunner {
+ private static final Logger logger =
LoggerFactory.getLogger(UpgradeRunner.class);
+
+ private final DolphinSchedulerManager dolphinSchedulerManager;
+
+ UpgradeRunner(DolphinSchedulerManager dolphinSchedulerManager) {
+ this.dolphinSchedulerManager = dolphinSchedulerManager;
+ }
- /**
- * upgrade dolphin scheduler db
- * @param args args
- */
- public static void main(String[] args) {
- DolphinSchedulerManager dolphinSchedulerManager = new
DolphinSchedulerManager();
- try {
- dolphinSchedulerManager.upgradeDolphinScheduler();
- logger.info("upgrade DolphinScheduler success");
- } catch (Exception e) {
- logger.error(e.getMessage(),e);
- logger.info("Upgrade DolphinScheduler failed");
- throw new RuntimeException(e);
- }
- }
-
-
-
+ @Override
+ public void run(String... args) throws Exception {
+ dolphinSchedulerManager.upgradeDolphinScheduler();
+ logger.info("upgrade DolphinScheduler success");
+ }
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl.sql
index 569ff69..3c9e4a0 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl.sql
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+delimiter d//
CREATE OR REPLACE FUNCTION public.dolphin_update_metadata(
)
RETURNS character varying
@@ -316,3 +317,4 @@ BEGIN
END;
$BODY$;
+d//
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl_post.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl_post.sql
index 728b6bd..8e2bbe6 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl_post.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.0_schema/postgresql/dolphinscheduler_ddl_post.sql
@@ -16,7 +16,6 @@
*/
ALTER TABLE "t_ds_process_definition" DROP CONSTRAINT
"t_ds_process_definition_pkey";
-ALTER TABLE "t_ds_process_definition" ADD CONSTRAINT
"t_ds_process_definition_pkey" PRIMARY KEY ("id","code");
ALTER TABLE "t_ds_process_definition" DROP CONSTRAINT
"process_definition_unique";
DROP INDEX "process_definition_index";
ALTER TABLE "t_ds_process_definition" DROP "process_definition_json";
@@ -24,4 +23,4 @@ ALTER TABLE "t_ds_process_definition" DROP "connects";
ALTER TABLE "t_ds_process_definition" DROP "receivers";
ALTER TABLE "t_ds_process_definition" DROP "receivers_cc";
ALTER TABLE "t_ds_process_definition" DROP "modify_by";
-ALTER TABLE "t_ds_process_definition" DROP "resource_ids";
\ No newline at end of file
+ALTER TABLE "t_ds_process_definition" DROP "resource_ids";
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/BaseDaoTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/BaseDaoTest.java
index d087626..5838ad7 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/BaseDaoTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/BaseDaoTest.java
@@ -18,20 +18,17 @@
package org.apache.dolphinscheduler.dao;
import org.apache.dolphinscheduler.common.enums.ProfileType;
-import org.apache.dolphinscheduler.dao.datasource.SpringConnectionFactory;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles(value = ProfileType.H2)
-@ContextConfiguration(classes = SpringConnectionFactory.class)
@Transactional
@Rollback
public abstract class BaseDaoTest {
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ConnectionFactoryTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ConnectionFactoryTest.java
deleted file mode 100644
index a2a9c15..0000000
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ConnectionFactoryTest.java
+++ /dev/null
@@ -1,39 +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.mapper;
-
-import org.apache.dolphinscheduler.dao.datasource.ConnectionFactory;
-
-import java.sql.Connection;
-
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-
-public class ConnectionFactoryTest {
- @BeforeClass
- public static void setup() {
- System.setProperty("spring.profiles.active", "h2");
- }
-
- @Test
- public void testConnection() throws Exception {
- Connection connection =
ConnectionFactory.getInstance().getDataSource().getConnection();
- Assert.assertTrue(connection != null);
- }
-}
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/ProcessDefinitionDaoTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/ProcessDefinitionDaoTest.java
index e2078f7..58ecfc8 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/ProcessDefinitionDaoTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/ProcessDefinitionDaoTest.java
@@ -17,26 +17,21 @@
package org.apache.dolphinscheduler.dao.upgrade;
-import static org.apache.dolphinscheduler.dao.upgrade.UpgradeDao.getDataSource;
-
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
-import org.junit.BeforeClass;
import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ActiveProfiles;
+@ActiveProfiles("h2")
public class ProcessDefinitionDaoTest {
- static DataSource dataSource;
+ @Autowired
+ private DataSource dataSource;
final ProcessDefinitionDao processDefinitionDao = new
ProcessDefinitionDao();
- @BeforeClass
- public static void seuUp() {
- System.setProperty("spring.profiles.active", "h2");
- dataSource = getDataSource();
- }
-
@Test
public void testQueryAllProcessDefinition() {
//Map<Integer, String> processDefinitionJsonMap =
processDefinitionDao.queryAllProcessDefinition(dataSource.getConnection());
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtilsTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtilsTest.java
new file mode 100644
index 0000000..b505709
--- /dev/null
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/SchemaUtilsTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SchemaUtilsTest {
+
+ @Test
+ public void testIsAGreatVersion() {
+ // param is null
+ try {
+ SchemaUtils.isAGreatVersion(null, null);
+ } catch (RuntimeException e) {
+ Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
+ }
+
+ // param is ""
+ try {
+ SchemaUtils.isAGreatVersion("", "");
+ } catch (RuntimeException e) {
+ Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
+ }
+ Assert.assertFalse(SchemaUtils.isAGreatVersion("1", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("2", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1.0.1"));
+ Assert.assertFalse(SchemaUtils.isAGreatVersion("1.1", "1.2"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1.1", "1.1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("10.1.1", "1.01.100"));
+ try {
+ SchemaUtils.isAGreatVersion("10.1.1", ".1");
+ Assert.fail("Should fail");
+ } catch (Exception ignored) {
+ // This is expected
+ }
+ try {
+ SchemaUtils.isAGreatVersion("a.1.1", "b.1");
+ Assert.fail("Should fail");
+ } catch (Exception ignored) {
+ // This is expected
+ }
+ }
+}
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
deleted file mode 100644
index e7f9211..0000000
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/UpgradeDaoTest.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;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class UpgradeDaoTest {
- private PostgresqlUpgradeDao postgresqlUpgradeDao;
-
- @BeforeClass
- public static void setUpClass() {
- System.setProperty("spring.profiles.active", "h2");
- }
-
- @Test
- public void setUp() {
- postgresqlUpgradeDao = PostgresqlUpgradeDao.getInstance();
- }
-
- @Test
- public void testQueryQueryAllOldWorkerGroup() throws Exception{
- //postgresqlUpgradeDao.updateProcessDefinitionJsonWorkerGroup();
- }
-
-}
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/WorkerGroupDaoTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/WorkerGroupDaoTest.java
index 44bdccf..3140a64 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/WorkerGroupDaoTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/upgrade/WorkerGroupDaoTest.java
@@ -16,8 +16,6 @@
*/
package org.apache.dolphinscheduler.dao.upgrade;
-import static org.apache.dolphinscheduler.dao.upgrade.UpgradeDao.getDataSource;
-
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.junit.Assert.assertThat;
@@ -25,11 +23,12 @@ import java.util.Map;
import javax.sql.DataSource;
-import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
public class WorkerGroupDaoTest {
+ @Autowired
protected DataSource dataSource;
@BeforeClass
@@ -37,11 +36,6 @@ public class WorkerGroupDaoTest {
System.setProperty("spring.profiles.active", "h2");
}
- @Before
- public void setup() {
- dataSource = getDataSource();
- }
-
@Test
public void testQueryQueryAllOldWorkerGroup() throws Exception {
WorkerGroupDao workerGroupDao = new WorkerGroupDao();
diff --git a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
index 866e62e..33268e3 100644
--- a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
+++ b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
@@ -147,7 +147,7 @@
<includes>
<include>**/*</include>
</includes>
- <outputDirectory>./sql</outputDirectory>
+ <outputDirectory>./sql/sql</outputDirectory> <!-- make sure the
hierarchy is the same as in src/resources -->
</fileSet>
<fileSet>
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/tenant/docker-compose.yaml
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/tenant/docker-compose.yaml
index 13075d3..ec761b2 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/tenant/docker-compose.yaml
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/tenant/docker-compose.yaml
@@ -21,6 +21,8 @@ services:
dolphinscheduler:
image: apache/dolphinscheduler:ci
command: [ standalone-server ]
+ environment:
+ DATABASE_TYPE: h2
expose:
- 12345
networks:
diff --git a/script/create-dolphinscheduler.sh
b/script/create-dolphinscheduler.sh
index 9ca9499..8591277 100755
--- a/script/create-dolphinscheduler.sh
+++ b/script/create-dolphinscheduler.sh
@@ -22,16 +22,20 @@ DOLPHINSCHEDULER_HOME=$BIN_DIR/..
export JAVA_HOME=$JAVA_HOME
+export DATABASE_TYPE=${DATABASE_TYPE:-"h2"}
+export SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-"default"}
+export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},${DATABASE_TYPE}"
export DOLPHINSCHEDULER_CONF_DIR=$DOLPHINSCHEDULER_HOME/conf
export DOLPHINSCHEDULER_LIB_JARS=$DOLPHINSCHEDULER_HOME/lib/*
+export DOLPHINSCHEDULER_SQL_DIR=$DOLPHINSCHEDULER_HOME/sql
export DOLPHINSCHEDULER_OPTS="-server -Xms64m -Xmx64m -Xss512k
-XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:LargePageSizeInBytes=64m -XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
export STOP_TIMEOUT=5
CLASS=org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler
-exec_command="$DOLPHINSCHEDULER_OPTS -classpath
$DOLPHINSCHEDULER_CONF_DIR:$DOLPHINSCHEDULER_LIB_JARS $CLASS"
+exec_command="$DOLPHINSCHEDULER_OPTS -classpath
$DOLPHINSCHEDULER_SQL_DIR:$DOLPHINSCHEDULER_CONF_DIR:$DOLPHINSCHEDULER_LIB_JARS
$CLASS"
cd $DOLPHINSCHEDULER_HOME
$JAVA_HOME/bin/java $exec_command
diff --git a/script/dolphinscheduler-daemon.sh
b/script/dolphinscheduler-daemon.sh
index f895a3b..64d6b83 100755
--- a/script/dolphinscheduler-daemon.sh
+++ b/script/dolphinscheduler-daemon.sh
@@ -59,7 +59,7 @@ cd $DOLPHINSCHEDULER_HOME
export DOLPHINSCHEDULER_OPTS="-server -XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=128m -Xss512k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70
-XX:+PrintGCDetails -Xloggc:$DOLPHINSCHEDULER_LOG_DIR/gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof -XshowSettings:vm
$DOLPHINSCHEDULER_OPTS"
-export dbtype=${dbtype:-"h2"}
+export DATABASE_TYPE=${DATABASE_TYPE:-"h2"}
export SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-"default"}
if [ "$command" = "api-server" ]; then
@@ -67,32 +67,32 @@ if [ "$command" = "api-server" ]; then
CLASS=org.apache.dolphinscheduler.api.ApiApplicationServer
HEAP_OPTS="-Xms1g -Xmx1g -Xmn512m"
export DOLPHINSCHEDULER_OPTS="$HEAP_OPTS $DOLPHINSCHEDULER_OPTS
$API_SERVER_OPTS"
- export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},api,${dbtype}"
+ export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},api,${DATABASE_TYPE}"
elif [ "$command" = "master-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-master.xml"
CLASS=org.apache.dolphinscheduler.server.master.MasterServer
HEAP_OPTS="-Xms4g -Xmx4g -Xmn2g"
export DOLPHINSCHEDULER_OPTS="$HEAP_OPTS $DOLPHINSCHEDULER_OPTS
$MASTER_SERVER_OPTS"
- export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},master,${dbtype}"
+ export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},master,${DATABASE_TYPE}"
elif [ "$command" = "worker-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-worker.xml"
CLASS=org.apache.dolphinscheduler.server.worker.WorkerServer
HEAP_OPTS="-Xms2g -Xmx2g -Xmn1g"
export DOLPHINSCHEDULER_OPTS="$HEAP_OPTS $DOLPHINSCHEDULER_OPTS
$WORKER_SERVER_OPTS"
- export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},worker,${dbtype}"
+ export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},worker,${DATABASE_TYPE}"
elif [ "$command" = "alert-server" ]; then
LOG_FILE="-Dlogback.configurationFile=conf/logback-alert.xml"
CLASS=org.apache.dolphinscheduler.alert.AlertServer
HEAP_OPTS="-Xms1g -Xmx1g -Xmn512m"
export DOLPHINSCHEDULER_OPTS="$HEAP_OPTS $DOLPHINSCHEDULER_OPTS
$ALERT_SERVER_OPTS"
- export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},alert,${dbtype}"
+ export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},alert,${DATABASE_TYPE}"
elif [ "$command" = "logger-server" ]; then
CLASS=org.apache.dolphinscheduler.server.log.LoggerServer
HEAP_OPTS="-Xms1g -Xmx1g -Xmn512m"
export DOLPHINSCHEDULER_OPTS="$HEAP_OPTS $DOLPHINSCHEDULER_OPTS
$LOGGER_SERVER_OPTS"
elif [ "$command" = "standalone-server" ]; then
CLASS=org.apache.dolphinscheduler.server.StandaloneServer
- export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},standalone,${dbtype}"
+ export
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},standalone,${DATABASE_TYPE}"
else
echo "Error: No command named '$command' was found."
exit 1
diff --git a/script/upgrade-dolphinscheduler.sh
b/script/upgrade-dolphinscheduler.sh
index 42ba839..a8ef4e7 100755
--- a/script/upgrade-dolphinscheduler.sh
+++ b/script/upgrade-dolphinscheduler.sh
@@ -22,16 +22,20 @@ DOLPHINSCHEDULER_HOME=$BIN_DIR/..
export JAVA_HOME=$JAVA_HOME
+export DATABASE_TYPE=${DATABASE_TYPE:-"h2"}
+export SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-"default"}
+export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},${DATABASE_TYPE}"
export DOLPHINSCHEDULER_CONF_DIR=$DOLPHINSCHEDULER_HOME/conf
export DOLPHINSCHEDULER_LIB_JARS=$DOLPHINSCHEDULER_HOME/lib/*
+export DOLPHINSCHEDULER_SQL_DIR=$DOLPHINSCHEDULER_HOME/sql
export DOLPHINSCHEDULER_OPTS="-server -Xms64m -Xmx64m -Xss512k
-XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:LargePageSizeInBytes=64m -XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
export STOP_TIMEOUT=5
CLASS=org.apache.dolphinscheduler.dao.upgrade.shell.UpgradeDolphinScheduler
-exec_command="$DOLPHINSCHEDULER_OPTS -classpath
$DOLPHINSCHEDULER_CONF_DIR:$DOLPHINSCHEDULER_LIB_JARS $CLASS"
+exec_command="$DOLPHINSCHEDULER_OPTS -classpath
$DOLPHINSCHEDULER_SQL_DIR:$DOLPHINSCHEDULER_CONF_DIR:$DOLPHINSCHEDULER_LIB_JARS
$CLASS"
cd $DOLPHINSCHEDULER_HOME
$JAVA_HOME/bin/java $exec_command