感觉 seata 即使发生错误,分支状态也可能是PhaseOne_Done -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

感觉 seata 即使发生错误,分支状态也可能是PhaseOne_Done

来自:阿里开源 2021-02-02 10:43:57 395 1

在AbstractDMLBaseExecutor.executeAutoCommitTrue中,connectionProxy.setAutoCommit(true)在finally块中执行,尽管发生异常或回滚,这可能会导致分支状态设置成功完成的事件,因为setAutoCommit(true)也调用方法commit,并且提交可能成功。

protected T executeAutoCommitTrue(Object[] args) throws Throwable {
        T result = null;
        AbstractConnectionProxy connectionProxy = statementProxy.getConnectionProxy();
        LockRetryController lockRetryController = new LockRetryController();
        try {
            connectionProxy.setAutoCommit(false);
            while (true) {
                try {
                    result = executeAutoCommitFalse(args);
                    connectionProxy.commit();
                    break;
                } catch (LockConflictException lockConflict) {
                    connectionProxy.getTargetConnection().rollback();
                    lockRetryController.sleep(lockConflict);
                }
            }

        } catch (Exception e) {
            // when exception occur in finally,this exception will lost, so just print it here
            LOGGER.error("exception occur", e);
            throw e;
        } finally {
            connectionProxy.setAutoCommit(true);
        }
        return result;
    }

取消 提交回答
全部回答(1)
  • 一人吃饱,全家不饿
    2021-02-02 10:44:04

    主要问题是setAutoCommit方法无法确定db的连接上是否存在分布式事务,但不会提交,而是直接调用commit()方法。 ConnectionProxy隐含JDBC接口,所以我认为我们应该遵循jdbc规范,因为它是一个连接接口,应该与jdbc接口保持一致,因此调用其自己的commit。

    0 0
相关问答

1

回答

seata支持数据代理的达梦数据库语法吗?

2022-08-22 17:20:07 68浏览量 回答数 1

0

回答

Seata中AT模式下是需要本地事务提交才会像TC注册分支事务吗?

2022-07-04 12:27:07 249浏览量 回答数 0

0

回答

阿里巴巴云原生钉钉群 二维码失效,没办法加入,这个麻烦官方更新下?

2021-08-04 23:08:56 289浏览量 回答数 0

1

回答

使用@OneToMany进行级联保存时,出现Many端没法保存One端的ID而出现报错?报错

2020-06-06 15:47:48 648浏览量 回答数 1

1

回答

spring-data JpaRepository save()方法的副作用

2020-03-27 22:53:36 1081浏览量 回答数 1

2

回答

举一个例子来解释更多 Staters 的内容?

2019-11-18 14:30:51 1054浏览量 回答数 2

2

回答

运行状态:创建网络连接中 ,也没办法取消状态也不发生变化

2018-09-05 15:50:02 641浏览量 回答数 2

1

回答

spring-data-jpa分页问题

2016-03-18 10:34:06 2292浏览量 回答数 1

1

回答

关于spring data jpa 事务问题

2016-03-04 14:33:17 2645浏览量 回答数 1

1

回答

请教大家,应用通过内网ip无法建立连接,使用的druid

2014-08-20 01:23:46 5683浏览量 回答数 1
0
文章
1508
问答
来源圈子
更多
阿里巴巴相信开源的世界里人人贡献代码,人人获得收益,共同创造一个互帮互利的社区,促进技术进步和发展。
+ 订阅
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载