1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction#commit com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#getTransaction com.arjuna.ats.arjuna.coordinator.BasicAction#Current com.arjuna.ats.internal.arjuna.thread.ThreadActionData#currentAction com.arjuna.ats.internal.arjuna.thread.ThreadActionData#setup com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#commitAndDisassociate com.arjuna.ats.arjuna.coordinator.BasicAction#status com.arjuna.ats.arjuna.AtomicAction#commit com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator#end com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator#beforeCompletion com.arjuna.ats.arjuna.coordinator.BasicAction#End com.arjuna.ats.arjuna.coordinator.BasicAction#doOnePhase 是否可以执行一阶段提交优化 com.arjuna.ats.arjuna.coordinator.RecordList#size 判断 RecordList 大小为1则可以执行一阶段优化 com.arjuna.ats.arjuna.coordinator.BasicAction#prepare 执行 xa end + xa prepare com.arjuna.ats.arjuna.coordinator.BasicAction#criticalStart com.arjuna.ats.arjuna.coordinator.BasicAction#createPreparedLists 创建 prepared list com.arjuna.ats.arjuna.coordinator.BasicAction#doPrepare 遍历所有节点,依次执行 xa end + xa prepare com.arjuna.ats.arjuna.coordinator.RecordList#size com.arjuna.ats.arjuna.coordinator.RecordList#getFront com.arjuna.ats.arjuna.coordinator.BasicAction#doPrepare 节点1执行 xa end + xa prepare com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#topLevelPrepare com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#toString com.arjuna.ats.jta.xa.XidImple#toString com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#order com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#endAssociation 执行 xa end com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#endAssociation com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#getXAResourceState com.arjuna.ats.internal.jta.xa.TxInfo#getState com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#doEnd 调用 RM 执行 xa end 操作 com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple#setXAResourceState com.zc.transaction.xa.SingleXACtrlResource#prepare 调用 RM 执行 xa prepare com.arjuna.ats.arjuna.coordinator.BasicAction#insertRecord 插入到 preparedList com.arjuna.ats.arjuna.coordinator.BasicAction#doPrepare 节点2执行 xa end + xa prepare,流程和上面完全相同 ...... com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#doSave com.arjuna.ats.arjuna.coordinator.BasicAction#preparedStatus 更新事务状态为 ActionStatus.COMMITTING com.arjuna.ats.arjuna.coordinator.BasicAction#save_state 保存状态到 outputBuffer com.arjuna.ats.arjuna.StateManager#packHeader com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord#save_state com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#write_committed 事务状态写到存储 com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#write_state_internal com.arjuna.ats.internal.arjuna.objectstore.ShadowingStore#write_state com.arjuna.ats.internal.arjuna.objectstore.ShadowingStore#genPathName com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#getStoreName com.arjuna.ats.arjuna.objectstore.ObjectStore#locateStore 定位到存储文件 com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#openAndLock 加文件锁 com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#openAndLockInternal com.arjuna.ats.internal.arjuna.objectstore.ShadowNoFileLockStore#lock com.arjuna.ats.arjuna.state.OutputBuffer#buffer com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#synchronousWrites 文件系统:同步写 com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#closeAndUnlock 解文件锁 com.arjuna.ats.internal.arjuna.objectstore.FileSystemStore#addToCache 缓存事务状态 com.arjuna.ats.arjuna.coordinator.BasicAction#criticalEnd
|