Loading escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/EschedulerManager.java +22 −8 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ public class EschedulerManager { UpgradeDao upgradeDao = UpgradeDao.getInstance(); public void initEscheduler() { // Determines whether the escheduler table structure has been init if(upgradeDao.isExistsTable("t_escheduler_version") || upgradeDao.isExistsTable("t_escheduler_queue")) { logger.info("The database has been initialized. Skip the initialization step"); return; } this.initEschedulerSchema(); } public void initEschedulerSchema() { logger.info("Start initializing the ark manager mysql table structure"); logger.info("Start initializing the escheduler manager mysql table structure"); upgradeDao.initEschedulerSchema(); } Loading @@ -52,15 +57,20 @@ public class EschedulerManager { }else { String version = ""; // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { // Gets the version of the current system if (upgradeDao.isExistsTable("t_escheduler_version")) { version = upgradeDao.getCurrentVersion(); }else { }else if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){ version = "1.0.1"; }else if(upgradeDao.isExistsTable("t_escheduler_queue")){ version = "1.0.0"; }else{ logger.error("Unable to determine current software version, so cannot upgrade"); } // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { schemaVersion = schemaDir.split("_")[0]; if(SchemaUtils.isAGreatVersion(schemaVersion , version)) { Loading @@ -70,7 +80,11 @@ public class EschedulerManager { logger.info("Begin upgrading escheduler's mysql table structure"); upgradeDao.upgradeEscheduler(schemaDir); if(SchemaUtils.isAGreatVersion(version,"1.0.1")){ version = upgradeDao.getCurrentVersion(); }else { version = schemaVersion; } } } Loading escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/UpgradeDao.java +32 −1 Original line number Diff line number Diff line Loading @@ -122,7 +122,11 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a table exists * @param tableName * @return */ public boolean isExistsTable(String tableName) { Connection conn = null; try { Loading @@ -144,6 +148,33 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a field exists in the specified table * @param tableName * @param columnName * @return */ public boolean isExistsColumn(String tableName,String columnName) { Connection conn = null; try { conn = ConnectionFactory.getDataSource().getConnection(); ResultSet rs = conn.getMetaData().getColumns(null,null,tableName,columnName); if (rs.next()) { return true; } else { return false; } } catch (SQLException e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(),e); } finally { MysqlUtil.realeaseResource(null, null, conn); } } public String getCurrentVersion() { String sql = String.format("select version from %s",T_VERSION_NAME); Loading escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/shell/CreateEscheduler.java +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ public class CreateEscheduler { private static final Logger logger = LoggerFactory.getLogger(CreateEscheduler.class); public static void main(String[] args) { Thread.currentThread().setName("manager-CreateEscheduler"); EschedulerManager eschedulerManager = new EschedulerManager(); eschedulerManager.initEscheduler(); logger.info("init escheduler finished"); Loading sql/upgrade/1.0.2_schema/mysql/escheduler_dml.sql +1 −1 Original line number Diff line number Diff line INSERT INTO `t_escheduler_version` (`version`) VALUES ('1.0.0'); No newline at end of file INSERT INTO `t_escheduler_version` (`version`) VALUES ('1.0.2'); No newline at end of file Loading
escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/EschedulerManager.java +22 −8 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ public class EschedulerManager { UpgradeDao upgradeDao = UpgradeDao.getInstance(); public void initEscheduler() { // Determines whether the escheduler table structure has been init if(upgradeDao.isExistsTable("t_escheduler_version") || upgradeDao.isExistsTable("t_escheduler_queue")) { logger.info("The database has been initialized. Skip the initialization step"); return; } this.initEschedulerSchema(); } public void initEschedulerSchema() { logger.info("Start initializing the ark manager mysql table structure"); logger.info("Start initializing the escheduler manager mysql table structure"); upgradeDao.initEschedulerSchema(); } Loading @@ -52,15 +57,20 @@ public class EschedulerManager { }else { String version = ""; // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { // Gets the version of the current system if (upgradeDao.isExistsTable("t_escheduler_version")) { version = upgradeDao.getCurrentVersion(); }else { }else if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){ version = "1.0.1"; }else if(upgradeDao.isExistsTable("t_escheduler_queue")){ version = "1.0.0"; }else{ logger.error("Unable to determine current software version, so cannot upgrade"); } // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { schemaVersion = schemaDir.split("_")[0]; if(SchemaUtils.isAGreatVersion(schemaVersion , version)) { Loading @@ -70,7 +80,11 @@ public class EschedulerManager { logger.info("Begin upgrading escheduler's mysql table structure"); upgradeDao.upgradeEscheduler(schemaDir); if(SchemaUtils.isAGreatVersion(version,"1.0.1")){ version = upgradeDao.getCurrentVersion(); }else { version = schemaVersion; } } } Loading
escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/UpgradeDao.java +32 −1 Original line number Diff line number Diff line Loading @@ -122,7 +122,11 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a table exists * @param tableName * @return */ public boolean isExistsTable(String tableName) { Connection conn = null; try { Loading @@ -144,6 +148,33 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a field exists in the specified table * @param tableName * @param columnName * @return */ public boolean isExistsColumn(String tableName,String columnName) { Connection conn = null; try { conn = ConnectionFactory.getDataSource().getConnection(); ResultSet rs = conn.getMetaData().getColumns(null,null,tableName,columnName); if (rs.next()) { return true; } else { return false; } } catch (SQLException e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(),e); } finally { MysqlUtil.realeaseResource(null, null, conn); } } public String getCurrentVersion() { String sql = String.format("select version from %s",T_VERSION_NAME); Loading
escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/shell/CreateEscheduler.java +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ public class CreateEscheduler { private static final Logger logger = LoggerFactory.getLogger(CreateEscheduler.class); public static void main(String[] args) { Thread.currentThread().setName("manager-CreateEscheduler"); EschedulerManager eschedulerManager = new EschedulerManager(); eschedulerManager.initEscheduler(); logger.info("init escheduler finished"); Loading
sql/upgrade/1.0.2_schema/mysql/escheduler_dml.sql +1 −1 Original line number Diff line number Diff line INSERT INTO `t_escheduler_version` (`version`) VALUES ('1.0.0'); No newline at end of file INSERT INTO `t_escheduler_version` (`version`) VALUES ('1.0.2'); No newline at end of file