ByteTCC
ByteTCC copied to clipboard
没有使用的参考样例和文档
能否提供参考样例和文档?
0.2.1-SNAPSHOT仍在开发中,还没有样例和文档。0.2.0-alpha版出过样例、文档,地址:http://code.taobao.org/p/openjtcc/wiki/index/
请问现在的0.2.1版成熟度如何?是否可以应用于生产?
发件人: liuyangming 发送时间: 2016-04-16 00:59 收件人: liuyangming/ByteTCC 抄送: wushuicheng 主题: Re: [liuyangming/ByteTCC] 没有使用的参考样例和文档 (#2) 0.2.1-SNAPSHOT仍在开发中,还没有样例和文档。0.2.0-alpha版出过样例、文档,地址:http://code.taobao.org/p/openjtcc/wiki/index/ — You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub
0.2.1目前尚未开发完成,还不能用于生产。
你好,我看到你提供的demo例子和你现在的代码差别很大,现在的代码里面已经没有xml标签解析的内容了,请问有没有一个针对当前代码的例子可以看下?
之前提供的demo示例,是基于0.2.0-alpha版本(http://code.taobao.org/p/openjtcc/src/)的。现在的版本是0.2.1-SNAPSHOT,与0.2.0-alpha版本有所变更(默认支持dubbo,暂时停用了原来的标签)。0.2.1-SNAPSHOT仍在开发中,暂时还没有提供demo,后续会提供出来。
0.2.0-alpha这个版本我跑起来的时候发现一个bug,远程的子事务中如果抛了异常,它不会执行回滚导致数据库的事务没有释放,表一直被锁住。后面最外层事务再去做回滚操作的时候,因为表被锁了,一直不能回滚成功。也就是说这个版本对嵌套事务的z
也就是说只能最外层事务抛异常了,整个事务的回滚是可以的,如果涉及到远程调用,里面抛了异常出来会回滚失败。不知道新版本有没有解决这个问题。
@abel-von 远程子事务每个操作都是一个独立的Local Transaction,原则上不管对错与否都会立即提交/回滚,是不会允许其锁住数据库资源。TCC事务中任意一个子分支的失败,都会导致全局事务的回滚(前提是Transactional注解定义该异常应该回滚)。
你说的这个问题,可能是一个我没有发现的bug,如果你方便提供重现的步骤,我可以直接在0.2.0-alpha版本上修复,而不必等到0.2.1-SNAPSHOT。
@abel-von 目前来说,不管是0.2.0-alpha还是0.2.1-SNAPSHOT都是不太成熟的。如果发现问题,欢迎大家及时和我反馈,我会尽可能的进行修复。目前大部分精力会放在0.2.1-SNAPSHOT上,但0.2.0-alpha中存在的问题,也不会置之不理。
@liuyangming 我把demo-client包里面的TestServiceImpl里面的 throw new IllegalStateException();
注释掉,然后把这句加到demo-server包里面的AccountServiceImpl.incrementAmount方法的stmt.executeUpdate();
后面,这样就是远程子事务调用失败了。这种情况下数据库的事务没有释放(可以通过select * from information_schema.innodb_trx
查询到事务还在)。然后执行回滚的时候,因为数据库表被上一个事务锁住,导致事务一直回滚失败。
@abel-von 你所描述的这个问题确实是之前版本中存在的一个bug。目前已在0.2.0-alpha版本上修复,代码仍提交在code.taobao.org。请重新更新代码,并使用最新上传的示例说明(在pom.xml中新增了bytetcc的依赖,并删除了原工程lib目录下的依赖包)。