Closed God-Gan closed 23 minutes ago
如果用户生产环境忘记创建了undolog,进行了业务发布,出故障了谁负责? If the user production environment forgets to create undolog and launches a business release, who is responsible for the failure?
默认检查我觉得是没有问题的,但是现在并没有额外的参数进行配置来校验,这就相当于通过liquibase这种场景来创建undo_log是没法使用的。
生产环境一般不允许自动建表等操作
https://github.com/apache/incubator-seata/issues/6022 我看了是这个issue需要新增的校验,上面也提到了通过开关控制,不过最后应该还是没有通过开关控制,实现的时候应该是没有考虑到这种场景。我先看看能不能改bean的加载顺序吧,不行的话只能先临时手动创建了。(小小吐槽一句,之前那么多版本都没加这个限制,现在加了限制,感觉有点鸡肋,毕竟使用AT模式的话如果生产环境还不创建undo_log表,那心是真大hhh)。
Ⅰ. Issue Description
我记得2.0.0应该是没有这个校验的。目前项目是通过liquibase的changelog进行undo_log表的创建,当表还没创建完成时就提示undo_log表不存在了,请问除了手动创建表以外还有其它方式解决吗,比如通过配置什么参数?因为生产环境目前没法手动提前创建表。
Ⅱ. Describe what happened
Caused by: java.lang.IllegalStateException: in AT mode, undo_log table not exist at org.apache.seata.rm.datasource.DataSourceProxy.checkUndoLogTableExist(DataSourceProxy.java:176) at org.apache.seata.rm.datasource.DataSourceProxy.init(DataSourceProxy.java:111) at org.apache.seata.rm.datasource.DataSourceProxy.(DataSourceProxy.java:97)
at org.apache.seata.rm.datasource.DataSourceProxy.(DataSourceProxy.java:82)
at org.apache.seata.spring.annotation.datasource.SeataAutoDataSourceProxyCreator.buildProxy(SeataAutoDataSourceProxyCreator.java:113)
at org.apache.seata.spring.annotation.datasource.SeataAutoDataSourceProxyCreator.wrapIfNecessary(SeataAutoDataSourceProxyCreator.java:87)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:434)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
... 110 common frames omitted
Ⅲ. Describe what you expected to happen
希望可以添加参数判断是否需要校验undo_log表是否存在。
Ⅳ. How to reproduce it (as minimally and precisely as possible)
Minimal yet complete reproducer code (or URL to code):
Ⅴ. Anything else we need to know?
Ⅵ. Environment:
java -version
): 17uname -a
):