protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
protected int recover() { if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug(DebugLevel.FUNCTIONS, VisibilityLevel.VIS_PROTECTED, com.arjuna.ats.jta.logging.FacilityCode.FAC_JTA, "XAResourceRecord.recover"); } if (_committed) { /* * A previous commit attempt failed, but we know the intention * was to commit. So let's try again. */ if (topLevelCommit() == TwoPhaseOutcome.FINISH_OK) return XARecoveryResource.RECOVERED_OK; else return XARecoveryResource.FAILED_TO_RECOVER; } else return XARecoveryResource.WAITING_FOR_RECOVERY; }
@Test public void testValid2PC () throws Exception { TransactionImple tx = new TransactionImple(0); DummyXA res = new DummyXA(false); XAResourceRecord xares = new XAResourceRecord(tx, res, tx.getTxId(), null); assertEquals(xares.topLevelPrepare(), TwoPhaseOutcome.PREPARE_OK); assertEquals(xares.topLevelCommit(), TwoPhaseOutcome.FINISH_OK); }
@Test public void testCommitFailure () throws Exception { FailureXAResource fxa = new FailureXAResource(FailureXAResource.FailLocation.commit); TransactionImple tx = new TransactionImple(0); XAResourceRecord xares = new XAResourceRecord(tx, fxa, tx.getTxId(), null); assertEquals(xares.topLevelPrepare(), TwoPhaseOutcome.PREPARE_OK); assertEquals(xares.topLevelCommit(), TwoPhaseOutcome.HEURISTIC_MIXED); assertTrue(xares.forgetHeuristic()); }
@Test public void testInvalid () throws Exception { XAResourceRecord xares = new XAResourceRecord(); assertEquals(xares.getXid(), null); assertEquals(xares.value(), null); assertEquals(xares.topLevelOnePhaseCommit(), TwoPhaseOutcome.ONE_PHASE_ERROR); assertEquals(xares.topLevelPrepare(), TwoPhaseOutcome.PREPARE_NOTOK); assertEquals(xares.topLevelAbort(), TwoPhaseOutcome.FINISH_ERROR); assertEquals(xares.topLevelCommit(), TwoPhaseOutcome.FINISH_ERROR); }
@Test public void testReadonly () throws Exception { XAResourceRecord xares; DummyRecoverableXAConnection rc = new DummyRecoverableXAConnection(); Object[] params = new Object[1]; params[XAResourceRecord.XACONNECTION] = rc; xares = new XAResourceRecord(new TransactionImple(0), new TestResource(true), new XidImple(new Uid()), params); assertEquals(xares.topLevelCommit(), TwoPhaseOutcome.NOT_PREPARED); assertEquals(xares.topLevelPrepare(), TwoPhaseOutcome.PREPARE_READONLY); }