public TransactionBranch addBranchXid(XAResource xaRes, Xid branchId) { TransactionBranch manager = new TransactionBranch(xaRes, branchId); resourceManagers.add(manager); return manager; }
if (manager != null) { xaRes.start(manager.getBranchId(), XAResource.TMRESUME); activeXaResources.put(xaRes, manager); return true; boolean sameRM; if (xaRes == manager.getCommitter()) { throw new IllegalStateException("xaRes " + xaRes + " is a committer but is not active or suspended"); sameRM = xaRes.isSameRM(manager.getCommitter()); } catch (XAException e) { log.warn("Unexpected error checking for same RM", e); xaRes.start(manager.getBranchId(), XAResource.TMJOIN); activeXaResources.put(xaRes, manager); return true;
try { try { manager.getCommitter().rollback(manager.getBranchId()); remove(index); everRolledBack = true; } catch (XAException e) { log.error("Unexpected exception committing " + manager.getCommitter() + "; continuing to commit other RMs", e); manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { remove(index); everRolledBack = true; cause = e; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { remove(index); log.info("Transaction has been heuristically committed"); cause = e; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RETRY) { if (manager.getCommitter() instanceof NamedXAResource) { String xaResourceName = manager.getResourceName(); NamedXAResourceFactory namedXAResourceFactory = txManager.getNamedXAResourceFactory(xaResourceName); if (namedXAResourceFactory != null) { try { TransactionBranch newManager = new ReturnableTransactionBranch(manager.getBranchXid(), namedXAResourceFactory); remove(index);
try { try { manager.getCommitter().commit(manager.getBranchId(), false); remove(index); evercommit = true; } catch (XAException e) { log.error("Unexpected exception committing " + manager.getCommitter() + "; continuing to commit other RMs", e); log.info("Transaction has been heuristically rolled back"); cause = e; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { remove(index); cause = e; evercommit = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { remove(index); manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RETRY) { if (manager.getCommitter() instanceof NamedXAResource) { String xaResourceName = manager.getResourceName(); NamedXAResourceFactory namedXAResourceFactory = txManager.getNamedXAResourceFactory(xaResourceName); if (namedXAResourceFactory != null) { try { TransactionBranch newManager = new ReturnableTransactionBranch(manager.getBranchXid(), namedXAResourceFactory);
TransactionBranch manager = (TransactionBranch) i.next(); try { manager.getCommitter().commit(manager.getBranchId(), false); evercommit = true; } catch (XAException e) { log.error("Unexpected exception committing " + manager.getCommitter() + "; continuing to commit other RMs", e); manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { log.info("Transaction has been heuristically committed and rolled back"); cause = e; evercommit = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { manager.getCommitter().forget(manager.getBranchId()); } else { cause = e;
TransactionBranch manager = (TransactionBranch) i.next(); try { manager.getCommitter().commit(manager.getBranchId(), false); evercommit = true; } catch (XAException e) { log.error("Unexpected exception committing " + manager.getCommitter() + "; continuing to commit other RMs", e); manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { log.info("Transaction has been heuristically committed and rolled back"); cause = e; evercommit = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { manager.getCommitter().forget(manager.getBranchId()); } else { cause = e;
try { manager.getCommitter().commit(manager.getBranchId(), true); synchronized (this) { status = Status.STATUS_COMMITTED; manager.getCommitter().forget(manager.getBranchId()); manager.getCommitter().forget(manager.getBranchId()); throw (HeuristicMixedException) new HeuristicMixedException("Error during one-phase commit").initCause(e); } else if (e.errorCode == XAException.XA_HEURCOM) { manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR
try { manager.getCommitter().commit(manager.getBranchId(), true); synchronized (this) { status = Status.STATUS_COMMITTED; manager.getCommitter().forget(manager.getBranchId()); manager.getCommitter().forget(manager.getBranchId()); throw (HeuristicMixedException) new HeuristicMixedException("Error during one-phase commit").initCause(e); } else if (e.errorCode == XAException.XA_HEURCOM) { manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR
try { manager.getCommitter().commit(manager.getBranchId(), true); synchronized (this) { status = Status.STATUS_COMMITTED; manager.getCommitter().forget(manager.getBranchId()); manager.getCommitter().forget(manager.getBranchId()); throw (HeuristicMixedException) new HeuristicMixedException("Error during one-phase commit").initCause(e); } else if (e.errorCode == XAException.XA_HEURCOM) { manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR
TransactionBranch manager = (TransactionBranch) i.next(); try { manager.getCommitter().rollback(manager.getBranchId()); everRolledback = true; } catch (XAException e) { if (e.errorCode == XAException.XA_HEURRB) { log.error("Transaction has been heuristically rolled back " + manager.getCommitter() + "; continuing with rollback", e); everRolledback = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { log.error("Transaction has been heuristically committed and rolled back " + manager.getCommitter() + "; continuing with rollback", e); cause = e; everRolledback = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { log.error("Transaction has been heuristically committed " + manager.getCommitter() + "; continuing with rollback", e); cause = e; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR
int vote = manager.getCommitter().prepare(manager.getBranchId()); if (vote == XAResource.XA_RDONLY) {
TransactionBranch manager = (TransactionBranch) resourceManagers.getFirst(); try { manager.getCommitter().commit(manager.getBranchId(), true); synchronized (this) { status = Status.STATUS_COMMITTED;
TransactionBranch manager = (TransactionBranch) i.next(); try { manager.getCommitter().rollback(manager.getBranchId()); everRolledback = true; } catch (XAException e) { if (e.errorCode == XAException.XA_HEURRB) { log.error("Transaction has been heuristically rolled back " + manager.getCommitter() + "; continuing with rollback", e); everRolledback = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURMIX) { log.error("Transaction has been heuristically committed and rolled back " + manager.getCommitter() + "; continuing with rollback", e); cause = e; everRolledback = true; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_HEURCOM) { log.error("Transaction has been heuristically committed " + manager.getCommitter() + "; continuing with rollback", e); cause = e; manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR
if (manager != null) { xaRes.start(manager.getBranchId(), XAResource.TMRESUME); activeXaResources.put(xaRes, manager); return true; boolean sameRM; if (xaRes == manager.getCommitter()) { throw new IllegalStateException("xaRes " + xaRes + " is a committer but is not active or suspended"); sameRM = xaRes.isSameRM(manager.getCommitter()); } catch (XAException e) { log.warn("Unexpected error checking for same RM", e); xaRes.start(manager.getBranchId(), XAResource.TMJOIN); activeXaResources.put(xaRes, manager); return true;
if (manager != null) { xaRes.start(manager.getBranchId(), XAResource.TMRESUME); activeXaResources.put(xaRes, manager); return true; boolean sameRM; if (xaRes == manager.getCommitter()) { throw new IllegalStateException("xaRes " + xaRes + " is a committer but is not active or suspended"); sameRM = xaRes.isSameRM(manager.getCommitter()); } catch (XAException e) { log.warn("Unexpected error checking for same RM", e); xaRes.start(manager.getBranchId(), XAResource.TMJOIN); activeXaResources.put(xaRes, manager); return true;
if (manager != null) { xaRes.start(manager.getBranchId(), XAResource.TMRESUME); activeXaResources.put(xaRes, manager); return true; boolean sameRM; if (xaRes == manager.getCommitter()) { throw new IllegalStateException("xaRes " + xaRes + " is a committer but is not active or suspended"); sameRM = xaRes.isSameRM(manager.getCommitter()); } catch (XAException e) { log.warn("Unexpected error checking for same RM", e); xaRes.start(manager.getBranchId(), XAResource.TMJOIN); activeXaResources.put(xaRes, manager); return true;
int vote = manager.getCommitter().prepare(manager.getBranchId()); if (vote == XAResource.XA_RDONLY) {
int vote = manager.getCommitter().prepare(manager.getBranchId()); if (vote == XAResource.XA_RDONLY) {
int vote = manager.getCommitter().prepare(manager.getBranchId()); if (vote == XAResource.XA_RDONLY) {
TransactionBranch manager = (TransactionBranch) i.next(); try { manager.getCommitter().rollback(manager.getBranchId()); } catch (XAException e) { log.error("Unexpected exception rolling back " + manager.getCommitter() + "; continuing with rollback", e); if (e.errorCode == XAException.XA_HEURRB) { log.info("Transaction has been heuristically rolled back " + manager.getCommitter() + "; continuing with rollback", e); manager.getCommitter().forget(manager.getBranchId()); } else if (e.errorCode == XAException.XA_RBROLLBACK || e.errorCode == XAException.XAER_RMERR