我的问题是:
说我有一个事务管理器和2个资源管理器。
在这种情况下,我知道RM 2处于等待状态,然后会话在数据库中超时并进入不确定状态。
如果在超出AbandonTimeout之前TM没有与RM重新连接,则该事务将被放弃。
我的问题是,当TM继续尝试恢复RM时,全局交易会发生什么?
当TM开始尝试恢复时,TM是否会向应用程序发回异常?
即使其中一个RM从未发送确认,TM是否会发回成功?
AbandonTimeout默认为24小时。 TM是否持有24小时的交易,然后一旦超时,发回一个例外?
在此链接2 phase Commit中,第二阶段结束:
那么如果永远不会收到提交确认,那么全局事务会发生什么?
在恢复操作期间,我找不到围绕全局事务解析的任何内容。任何帮助将不胜感激。
谢谢, 马特
答案 0 :(得分:0)
只有当所有参与者都返回ok时,事务才会在提交时返回到数据库。如果TM无法重新连接,它将保持不变,可能会锁定数据库页面(这通常需要手动清理)。
根据超时设置,客户端应用程序可能会收到错误。像oracle这样的某些数据库系统允许模拟不同的错误条件。以下链接描述了http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_txnman009.htm#ADMIN12285