Skip to content

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

下⽂的 重试失败 状态指上述这些状态

1. 全局锁操作功能设计:

1.1. 释放 全局锁:

图片

2. 全局事务 操作功能设计:

2.1)删除全局事务:

图片

2.2)停⽌提交/回滚重试:

图片

2.3)继续提交/回滚重试:

图片

2.4)更换状态操作示意图:

图片

注意:定时任务跳过该全局事务为PhaseTwo_STOP_Retryable的状态即可

2.5)发起单次提交/回滚:

图片

2.6)变更状态操作:

图片

将失败的修改为重试状态:

  • CommitFailed / RollbackFailed :是否要考虑超时时间问题,因为这期间可能过了很久,修改后会⻢上超时⽽失败
  • 针对TimeoutRollbackFailed / CommitRetryTimeout / RollbackRetryTimeout,有两个做法
    • 不⽀持修改,直接报错
    • ⽀持修改,但需要需要传⼊新的超时时间

2.7)修改超时时间:

图片

  • 已结束的全局事务状态有:
    • 失败的状态:CommitFailed,RollbackFailed,TimeoutRollbackFailed,CommitRetryTimeout,RollbackRetryTimeout
    • 其他状态:Committed,Rollbacked,Finished
  • 还未结束的全局事务:
    • Committing, CommitRetrying, AsyncCommitting, Committed
    • TimeoutRollbacking, TimeoutRollbackRetrying, RollbackRetrying, Rollbacking
    • Begin

3. 分⽀事务 操作功能设计:

分⽀事务⼤部分状态未持久化,因此操作仍⽤全局事务状态作为依据。

3.1)停⽌提交/回滚重试:

图片

3.2)继续提交/回滚重试:

图片

3.3)更换状态操作示意图:

图片

注意:定时任务跳过该分⽀事务为 PhaseTwo_STOP_Retryable 的状态即可

3.4)删除分⽀事务

图片

4. 控制台前端设计:

由于前端页面较为简单,操作功能,仅在原列表的后面添加一列,这里就不提供设计图了。

Clone this wiki locally