-
Task
-
Resolution: Obsolete
-
Major
-
None
-
JBossAS-4.0.1 Final
-
None
Implement optional transaction recovery
The simplest mechanism is to do this is with a local database
using the last resource gambit where during its "prepare" it logs the XID in a table.
If this last resource fails to commit, recovery will not find the transaction
in the table which means it will rollback the whole transaction.
This has limitations where a different local resource is required within the transaction
but not this local database used as the recovery log.
Another implementation is a local file. Though more complicated it should give superior
performance.
But, it does not work well with the last resource gambit, e.g. you cannot tell
whether the jdbc commit() suceeded or failed if it crashes just at the point of this invocation
before the result is returned from the db.
The other work required:
1) Possibly, simplify the dependencies in the JCA module so we can run the recovery earlier.
Currently the RARs need the transaction manager at deployment time. The
recovery service needs to be an external service depending upon both the
tm and the managed connection factories.
At least this will require a GUID for the XID so we can avoid duplicates between
unrecovered XIDs and any new XIDs created before recovery is complete.
2) JBossMQ needs to implement XAResource.recover()
- duplicates
-
JBAS-863 Provide logging to TM
- Closed