Skip to content

Instantly share code, notes, and snippets.

--- target/sources.orig/com/atomikos/recovery/TxState.java 2017-04-19 14:59:50.234613269 +0200
+++ target/sources/com/atomikos/recovery/TxState.java 2017-04-19 15:00:33.611003668 +0200
@@ -27,7 +27,7 @@
HEUR_MIXED ("HEURISTIC MIXED", true, false, TERMINATED),
COMMITTING ( true, false, HEUR_ABORTED, HEUR_COMMITTED, HEUR_HAZARD, HEUR_MIXED, TERMINATED),
ABORTING ("ROLLING BACK", false, false, HEUR_ABORTED, HEUR_COMMITTED, HEUR_HAZARD, HEUR_MIXED, TERMINATED),
- IN_DOUBT ("PREPARED", true, false, ABORTING, COMMITTING, TERMINATED),
+ IN_DOUBT ("PREPARED", true, false, ABORTING, COMMITTING, TERMINATED, ABANDONED),
PREPARING ( false, false, IN_DOUBT, ABORTING, TERMINATED),
ACTIVE ( false, false, ABORTING, COMMITTING, PREPARING);
--- com/atomikos/datasource/xa/XAResourceTransaction.java 2014-03-23 09:14:10.000000000 +0100
+++ com/atomikos/datasource/xa/XAResourceTransaction.java 2015-09-18 14:13:53.810419822 +0200
@@ -465,7 +465,7 @@
boolean recovered = false;
// perform extra initialization
- if (beforePrepare()) {
+ if (getXAResource() != null && beforePrepare()) {
// see case 23364: recovery before prepare should do nothing
// and certainly not reset the xaresource
@mbechler
mbechler / synchronizationAfterReadOnly.patch
Created September 18, 2015 12:26
Atomikos read-only coordinated transaction synchornizatin
--- com/atomikos/icatch/imp/CoordinatorImp.java 2014-01-20 23:28:36.000000000 +0100
+++ com/atomikos/icatch/imp/CoordinatorImp.java 2014-10-22 16:18:51.939767075 +0200
@@ -969,8 +969,11 @@
} else {
int prepareResult = prepare ();
// make sure to only do commit if NOT read only
- if ( prepareResult != Participant.READ_ONLY )
+ if ( prepareResult != Participant.READ_ONLY ) {
commit ( false );
+ } else {