链式事务出错情况处理
来源:6-5 实例1-DB-DB.链式事务管理器

慕无忌918605
2018-12-09
老师,以DB-DB为例,链式事务让两个事务连续提交可以降低出现不一致的概率。但是仍然有可能出现最后一步出错,倒数第二步已提交无法回滚的情况。那么如果出现这种情况一般怎么处理?如何补偿?
写回答
1回答
-
像这种情况,是不会有自动补偿或重试机制的,只能自己处理。然后,我们现在都是用spring data或mybatis,hibernate之类的框架,帮我们隐藏很多数据库操作的细节,所以要想在出错的时候自己再实现一些补偿或回滚的话,又会破坏很多地方,又会非常复杂。
所以,可能最容易的方式就是在全局处理错误的地方,把错误记下来,如果能从异常信息里获得更多信息,如出错的数据库和表,知道是什么方法导致出错,就能通过另外的程序、或人工进行回滚或补偿。
这需要注意的是,触发这个错误是比较麻烦的,想通过异常信息就定位错误也需要简洁良好的设计。还有,异常处理方法一定要做好冥等性。212019-01-13
相似问题