-
Notifications
You must be signed in to change notification settings - Fork 8.8k
Operate transactions design
WangLiang/王良 edited this page Jan 9, 2024
·
38 revisions
- 重试: GlobalStatus.Committing, GlobalStatus.CommitRetrying, GlobalStatus.Committed, GlobalStatus.TimeoutRollbacking,GlobalStatus.TimeoutRollbackRetrying, GlobalStatus.RollbackRetrying, GlobalStatus.Rollbacking
- 失败: CommitFailed,RollbackFailed,TimeoutRollbackFailed,CommitRetryTimeout, RollbackRetryTimeout
- 其他: Begin,AsyncCommitting,Committed,Rollbacked,Finished
下⽂的 重试 ,失败 状态指上述这些状态
注意:定时任务跳过该全局事务为PhaseTwo_STOP_Retryable的状态即可
将失败的修改为重试状态:
- CommitFailed / RollbackFailed :是否要考虑超时时间问题,因为这期间可能过了很久,修改后会⻢上超时⽽失败
- 针对TimeoutRollbackFailed / CommitRetryTimeout / RollbackRetryTimeout,有两个做法
- 不⽀持修改,直接报错
- ⽀持修改,但需要需要传⼊新的超时时间
- 已结束的全局事务状态有:
- 失败的状态:CommitFailed,RollbackFailed,TimeoutRollbackFailed,CommitRetryTimeout,RollbackRetryTimeout
- 其他状态:Committed,Rollbacked,Finished
- 还未结束的全局事务:
- Committing, CommitRetrying, AsyncCommitting, Committed
- TimeoutRollbacking, TimeoutRollbackRetrying, RollbackRetrying, Rollbacking
- Begin
分⽀事务⼤部分状态未持久化,因此操作仍⽤全局事务状态作为依据。
注意:定时任务跳过该分⽀事务为
PhaseTwo_STOP_Retryable
的状态即可
由于前端页面较为简单,操作功能,仅在原列表的后面添加一列,这里就不提供设计图了。