Weblogic执行transaction recover碰到的奇怪问题
2009-09-22 00:00:00 来源:WEB开发网这几天做transaction recover测试的时候,发现个很难理解的问题。
具体问题场景如下:
1:一个standby client程序,调用userTransaction.begin()后,顺序操作两个XA resource,这两个resource为同一个Oracle database, 不过操作使用的connection来源于不同的data source。connection1向表test中插入一条数据,connection2向表test1中插入一条数据。最后执行 userTransaction.commit()。
2:userTransaction.commit()执行的时,需要执行两阶段提交,首先是global prepare,如果所有的resource都prepare ok的话,weblogic这时候会写入tx record(写入到tlog中)。然后执行global commit。测试过程中,在执行完global prepare后,在global commit处设定break point,然后停止database。数据库停止后,去除global commit的break point, 此时weblogic需要向每个resource发出commit指令。因为部分resource此时是unavailable的,weblogic无法收到每个resource commit完成的响应,该tx信息会一直保存在tlog中,等待server重起的时候recover。
3:按照正常逻辑global prepare完成后,该tx应该是只能commit,而不能rollback的,但在测试中发现,weblogic在recover的时候 ,会去rollback这个tx。
下面是测试中记录的数据信息。
1:数据库重起后,weblogic重起前,可以看到database中该tx信息如下:
图片看不清楚?请点击这里查看原图(大图)。
Tags:Weblogic 执行 transaction
编辑录入:爽爽 [复制链接] [打 印]- ››WebLogic调整Java虚拟机性能优化参数
- ››执行SQLServer 2005 In-place升级
- ››执行SQL2000 Side-by-side升级
- ››Weblogic执行transaction recover碰到的奇怪问题
- ››Weblogic session persistence的性能的问题
- ››weblogic92连接池的连接数异常问题
- ››Weblogic中几个internal的XA timeout(状态切换相关...
- ››Weblogic中因为IP变更导致SubCoordinator not ava...
- ››Weblogic中的load banlance问题
- ››Weblogic81中HttpCompleteMessageTimeout相关的两...
- ››执行SQL2005升级分离附加
- ››执行SQL2005升级备份还原
更多精彩
赞助商链接