We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
What would you like to be added:
XA transaction exception handling process(XA agent scheduled tasks)
refert to: #822
Why is this needed:
The text was updated successfully, but these errors were encountered:
plz assign this issue to me @dongzl
Sorry, something went wrong.
1.PREPARE下发之前有节点失败或报错,关闭连接放弃事务数据
2.PREPARE下发过程中发生失败,则回滚事务,所有节点下发ROLLBACK 3.如果在COMMIT阶段发生失败,则尝试重试(重试次数需做限制或者开放给用户设置),几次尝试失败或者超出期望时间将事务交给定时任务(补偿机制)
如果在ROLLBACK阶段发生失败,则尝试重试(重试次数需做限制或者开放给用户设置),几次尝试失败或者超出期望时间将事务交给定时任务(补偿机制)
假如出现由于服务下线或者其他原因导致的提交或回滚任务被执行了一半(突然断连),在这种情况发生的时候需要有对应的补偿机制来保证数据的最终一致性。
要点:补偿事务本身也是一个最终一致性操作,因此也可能会失败。因此补偿事务中的步骤应该是幂等的。
首先看事务的状态:
prepare执行成功之前
丢弃连接,放弃事务数据,报错
prepare执行成功之后
当某个分支事务的XA prepare执行成功之后,则必须执行XA rollbalk或者XA commit,通过重试尽可能确保执行成功;
基于2PC实现的情况下,针对一些网络异常情况,arana接收不到响应,也就无法知道prepare、commit、rollback是否成功。针对这些情况,需要有某种方法去延迟确认分支事务的结果从而确认是提交还是回滚或者直接采取回滚的方式。
问题:
是否可以添加一个超时的事务状态,用于和显示的失败状态区分
参考链接:
https://seata.apache.org/zh-cn/docs/user/appendix/global-transaction-status
https://seata.apache.org/zh-cn/docs/dev/mode/xa-mode
https://actiontech.github.io/dble-docs-cn/2.Function/2.5_distribute_transaction/2.5.1_XA_trans_overview.html
https://learn.microsoft.com/zh-cn/azure/architecture/patterns/retry
https://downloads.mysql.com/docs/refman-5.7-en.pdf
No-SilverBullet
No branches or pull requests
What would you like to be added:
XA transaction exception handling process(XA agent scheduled tasks)
refert to: #822
Why is this needed:
The text was updated successfully, but these errors were encountered: