@Test public void test() { recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryBackoffPeriod(1); System.setProperty("com.arjuna.ats.jta.xaRecoveryNode", "1"); System.setProperty("XAResourceRecovery1", "com.hp.mwtests.ts.jta.recovery.DummyXARecoveryResource"); RecoveryManager manager = RecoveryManager.manager(RecoveryManager.DIRECT_MANAGEMENT); manager.scan(); manager.scan(); System.clearProperty("com.arjuna.ats.jta.xaRecoveryNode"); System.clearProperty("XAResourceRecovery1"); } }
protected void checkCMRRecovery(final DataSource dataSource) throws NamingException, ObjectStoreException { // This is test code, it allows us to verify that the // correct XID was // removed Xid committed = nonXAResource.getStartedXid(); assertNotNull(committed); // The recovery module has to perform lookups new InitialContext().rebind("commitmarkableresource", dataSource); // Now we need to correctly complete the transaction manager.scan(); assertFalse(recoveryModule.wasCommitted("commitmarkableresource", committed)); // Now we need to correctly complete the transaction manager.scan(); assertFalse(xaResource.wasCommitted()); assertTrue(xaResource.wasRolledback()); } }
@Test public void test() throws NotSupportedException, SystemException, IllegalStateException, RollbackException, SecurityException, HeuristicMixedException, HeuristicRollbackException, NamingException { arjPropertyManager.getObjectStoreEnvironmentBean().setObjectStoreType(JDBCStore.class.getName()); arjPropertyManager.getObjectStoreEnvironmentBean().setJdbcAccess(TestJDBCAccess.class.getName()); javax.transaction.TransactionManager tm = TransactionManager.transactionManager(); tm.begin(); tm.getTransaction().enlistResource(new DummyXAResource()); tm.getTransaction().enlistResource(new DummyXAResource()); tm.commit(); assertTrue(commitCount == 1); FAULT_JDBC = true; jtaPropertyManager.getJTAEnvironmentBean().setXaRecoveryNodes(Arrays.asList(new String[] { "1" })); jtaPropertyManager.getJTAEnvironmentBean().setXaResourceOrphanFilters(Arrays.asList(new XAResourceOrphanFilter[] { new com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter(), new com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter() })); jtaPropertyManager.getJTAEnvironmentBean().setXaResourceRecoveries(Arrays.asList(new XAResourceRecovery[] { new DummyXAResourceRecovery() })); jtaPropertyManager.getJTAEnvironmentBean().setOrphanSafetyInterval(1); recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryBackoffPeriod(2); recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryModules(Arrays.asList(new RecoveryModule[] { new XARecoveryModule() })); RecoveryManager manager = RecoveryManager.manager(RecoveryManager.DIRECT_MANAGEMENT); manager.scan(); assertFalse(rollbackCalled); }
manager.scan(null); boolean timeoutNotElapsed = coundDownXARecoveryStarted.await(AWAIT_TIMEOUT_S, TimeUnit.SECONDS); Assert.assertTrue("Time to get started XAResource.recover() function elapsed", timeoutNotElapsed);
recoveryManager.scan();
recoveryManager.scan();
recoveryManager.scan();
int recoveryBackoffPeriod = recoveryPropertyManager.getRecoveryEnvironmentBean().getRecoveryBackoffPeriod(); recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryBackoffPeriod(1); RecoveryManager.manager().scan(); recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryBackoffPeriod(recoveryBackoffPeriod); try {
manager.scan();
manager.scan();
@Test public void testRecoveryMonitorWithFailure() throws Exception { XATestResourceXARecovery.setUseFaultyResources(true); UserTransaction ut = com.arjuna.ats.jta.UserTransaction.userTransaction(); ut.begin(); TransactionImple tx = TransactionImple.getTransaction(); // enlist a resource that behaves correctly assertTrue(tx.enlistResource(new XATestResource(XATestResource.OK_JNDI_NAME, false))); // enlist a resource that throws an exception from recover assertTrue(tx.enlistResource(new XATestResource(XATestResource.FAULTY_JNDI_NAME, true))); ut.commit(); manager.scan(); assertTrue(jtaLogger.isRecoveryProblems()); }
RecoveryManager.manager().scan();
manager.initialize(); manager.scan();
manager.initialize(); manager.scan();
manager.scan();