瀏覽代碼

data-upgrade 去掉事务控制

deason 3 月之前
父節點
當前提交
d2264f8ebb
共有 1 個文件被更改,包括 17 次插入35 次删除
  1. 17 35
      data-upgrade/src/main/java/com/qmth/boot/data/upgrade/config/DataUpgradeListener.java

+ 17 - 35
data-upgrade/src/main/java/com/qmth/boot/data/upgrade/config/DataUpgradeListener.java

@@ -7,18 +7,12 @@ import com.qmth.boot.data.upgrade.service.DataUpgradeService;
 import com.qmth.boot.data.upgrade.utils.ClassHelper;
 import com.qmth.boot.data.upgrade.utils.VersionComparator;
 import com.zaxxer.hikari.HikariDataSource;
-import org.apache.ibatis.session.TransactionIsolationLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.context.event.ApplicationPreparedEvent;
 import org.springframework.context.ApplicationListener;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-import org.springframework.transaction.TransactionDefinition;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.TransactionCallbackWithoutResult;
-import org.springframework.transaction.support.TransactionTemplate;
 import org.springframework.util.ClassUtils;
 
 import java.lang.reflect.Constructor;
@@ -98,7 +92,6 @@ public class DataUpgradeListener implements ApplicationListener<ApplicationPrepa
     public void handlerDataUpgrade() {
         try (HikariDataSource dataSource = this.initDataSource()) {
             JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-            TransactionTemplate transactionTemplate = new TransactionTemplate(new DataSourceTransactionManager(dataSource));
 
             if (!this.existBootAppInfo(jdbcTemplate)) {
                 if (!properties.getBaseline()) {
@@ -133,35 +126,24 @@ public class DataUpgradeListener implements ApplicationListener<ApplicationPrepa
             List<String> versionKeys = new ArrayList<>(serviceMaps.keySet());
             versionKeys.sort(new VersionComparator());
 
-            // 调整事务隔离级别:串行化(最严格模式加锁读,避免脏读,幻读,不可重复读等)
-            transactionTemplate.setIsolationLevel(TransactionIsolationLevel.SERIALIZABLE.getLevel());
-            transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
-            transactionTemplate.execute(new TransactionCallbackWithoutResult() {
-                @Override
-                protected void doInTransactionWithoutResult(TransactionStatus status) {
-                    try {
-                        // 升级锁定
-                        if (!tryLock(jdbcTemplate, appInfo.getAppCode())) {
-                            throw new RuntimeException("升级锁定中,请稍后再试!");
-                        }
-                        log.info("upgrade locking...");
-
-                        for (String version : versionKeys) {
-                            log.warn("*************** data upgrade version:{} start ***************", version);
-                            serviceMaps.get(version).process(jdbcTemplate);
-                        }
-                    } catch (Exception e) {
-                        // DML-SQL语句支持事务‌,执行失败时触发自动回滚。
-                        status.setRollbackOnly();
-                        // DDL-SQL语句不支持事务‌,执行失败时请采用其它补偿机制回滚!!!
-                        throw new RuntimeException("SQL语句执行异常!", e);
-                    } finally {
-                        // 升级解锁
-                        unLock(jdbcTemplate, appInfo.getAppCode());
-                        log.info("upgrade unlock...");
-                    }
+            // 升级锁定
+            if (!tryLock(jdbcTemplate, appInfo.getAppCode())) {
+                throw new RuntimeException("升级锁定中,请稍后再试!");
+            }
+            log.info("upgrade locking...");
+
+            try {
+                for (String version : versionKeys) {
+                    log.warn("*************** data upgrade version:{} start ***************", version);
+                    serviceMaps.get(version).process(jdbcTemplate);
                 }
-            });
+            } catch (Exception e) {
+                throw new RuntimeException("SQL语句执行异常!", e);
+            } finally {
+                // 升级解锁
+                unLock(jdbcTemplate, appInfo.getAppCode());
+                log.info("upgrade unlock...");
+            }
 
             // 数据升级完成后,更新应用信息表
             this.updateBootAppInfo(jdbcTemplate, properties.getAppCode(), properties.getAppVersion());