Subject Re: [Firebird-Java] Recover from prepared transaction (limbo transaction in 2 Phase Commit)
Author Roman Rokytskyy
> With GFix one can solve
> these limbo transactions, but what we like to do is solve the limbo
> transactions from within our java application. Is this possible?
> ...
> The reason is the implementation of FBXid. On serialize
> (methode toBytes()) the length of globalId is stored as byte.
> On deserialize (constructor of FBXid) globalID is read by method
> readBuffer (XdrInputStream). Within this method the length of the
> buffer which is read is declared as integer (4 byte).

Thanks for the report. However, even we fix this issue, the code will not
work. It will correctly return you "in limbo" Xids, however it will not be
able to reconnect the transaction. This was discovered after JayBird 1.5.5
release. I have discussed the issue with David Jencks and it looks that the
XA code must be at least reviewed and/or rewritten.

Unfortunately, this will not happen in the nearest future. We have already a
working Services API support in HEAD and you will get the gfix functionality
in Java sooner as proper recovery for XA.

However, if you're ready to invest time into fixing the XA code in JayBird,
you're more than welcome! :)

Roman