[
http://jira.jboss.com/jira/browse/JBTM-187?page=all ]
Stephen Burdeau updated JBTM-187:
---------------------------------
Attachment: PutObjectStoreDirHere.zip
Mark,
I just reran the test. In this case:
DTPRA called XATerminator.prepare and XATerminator.commit with the following XID:
0x44545031,
0xa08006092b81403f8176768f52000082040077a101,
0x06092b81403f815561ae73
After restart, the XID returned from XATerminator.recover is the following:
131075,
'1--3fc02a9f:e68:45a532ca:7d'
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
The attached file is the entire zipped object store before JBoss was restarted to attempt
recovery.
Does this tell you what you want to know?
Problem recovering inbound transaction
--------------------------------------
Key: JBTM-187
URL:
http://jira.jboss.com/jira/browse/JBTM-187
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 4.2.2
Reporter: Peter Johnson
Assigned To: Mark Little
Fix For: 4.4
Attachments: PutObjectStoreDirHere.zip
I have a custom JCA 1.5 compliant resource adapter (called DTPRA) that I am attempting to
test with JBoss Application Server 4.0.5 and JBoss Transactions 4.2.2. DTPRA has already
been successfully tested with JBoss 4.0.2 (without recovery) and with BEA WebLogic Server
9.0 and IBM WebSphere Application Server 6.0.1 (both with recovery).
For this scenario, I am using the JBoss Application Server "all" config with
the distributed JTA configured.
I ran a test with an inbound transaction to DTPRA using JCA 1.5 transaction inflow. This
worked fine with no errors or unexpected warnings.
I ran the same test again with a sleep in DTPRA code so I could test recovery.
Here is a high-level summary of what is happened:
1) DTPRA generated an XID and called XATerminator.prepare with this XID.
XATerminator.prepare returned XA_OK, as expected.
2) Everyone involved in the transaction is successfully logged.
3) Before calling XATerminator.commit, I killed the Java process running JBoss.
4) I restarted JBoss.
5) DTPRA called XATerminator.recover and it returned one XID. However, the XID did not
match the XID that DTPRA supplied earlier on the XATerminator.prepare call.
6) Later, DTPRA called XATerminator.commit with the the same XID supplied in step 1. This
failed with an XAException with an errorCode of XAER_INVAL.
In particular, DTPRA called XATerminator.prepare and XATerminator.commit with the
following XID:
0x44545031,
0xa08006092b81403f8176768f520000820400757e21,
0x06092b81403f815561ae73
where the first value is the format ID, the second value is the global transaction ID,
and the third value is the branch qualifier. All three values are hexadecimal values, not
printable ASCII characters.
The XID returned from XATerminator.recover is the following:
131075,
0x312d2d33666330326139663a3534623a34353736653366373a3935,
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
That is, the global transaction ID is the ASCII string:
1--3fc02a9f_54b_4576e3f7_95
So, I have the following issues:
A) I expected the XID returned from XATerminator.recover to match the XID I supplied
earlier to XATerminator.prepare.
B) I expected the call to XATerminator.commit during recovery to succeed.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira