Search in sources :

Example 1 with HazelcastXAResource

use of com.hazelcast.transaction.HazelcastXAResource in project hazelcast by hazelcast.

the class ClientXATest method testRollback.

@Test
public void testRollback() throws Exception {
    Hazelcast.newHazelcastInstance();
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    HazelcastXAResource xaResource = client.getXAResource();
    tm.begin();
    Transaction transaction = tm.getTransaction();
    transaction.enlistResource(xaResource);
    TransactionContext context = xaResource.getTransactionContext();
    boolean error = false;
    try {
        final TransactionalMap m = context.getMap("m");
        m.put("key", "value");
        throw new RuntimeException("Exception for rolling back");
    } catch (Exception e) {
        error = true;
    } finally {
        close(error, xaResource);
    }
    assertNull(client.getMap("m").get("key"));
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) HazelcastInstance(com.hazelcast.core.HazelcastInstance) Transaction(javax.transaction.Transaction) TransactionContext(com.hazelcast.transaction.TransactionContext) RollbackException(javax.transaction.RollbackException) SystemException(javax.transaction.SystemException) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) Test(org.junit.Test) SlowTest(com.hazelcast.test.annotation.SlowTest)

Example 2 with HazelcastXAResource

use of com.hazelcast.transaction.HazelcastXAResource in project hazelcast by hazelcast.

the class ClientXATest method testRecovery.

@Test
public void testRecovery() throws Exception {
    HazelcastInstance instance = Hazelcast.newHazelcastInstance();
    Hazelcast.newHazelcastInstance();
    Hazelcast.newHazelcastInstance();
    HazelcastXAResource xaResource = instance.getXAResource();
    Xid myXid = new SerializableXID(42, "globalTransactionId".getBytes(), "branchQualifier".getBytes());
    xaResource.start(myXid, 0);
    TransactionContext context1 = xaResource.getTransactionContext();
    TransactionalMap<Object, Object> map = context1.getMap("map");
    map.put("key", "value");
    xaResource.prepare(myXid);
    instance.shutdown();
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    HazelcastXAResource clientXaResource = client.getXAResource();
    Xid[] recovered = clientXaResource.recover(0);
    for (Xid xid : recovered) {
        clientXaResource.commit(xid, false);
    }
    assertEquals("value", client.getMap("map").get("key"));
}
Also used : Xid(javax.transaction.xa.Xid) SerializableXID(com.hazelcast.transaction.impl.xa.SerializableXID) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionContext(com.hazelcast.transaction.TransactionContext) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) Test(org.junit.Test) SlowTest(com.hazelcast.test.annotation.SlowTest)

Example 3 with HazelcastXAResource

use of com.hazelcast.transaction.HazelcastXAResource in project hazelcast by hazelcast.

the class ClientXATest method txn.

private void txn(HazelcastInstance instance) throws Exception {
    HazelcastXAResource xaResource = instance.getXAResource();
    tm.begin();
    Transaction transaction = tm.getTransaction();
    transaction.enlistResource(xaResource);
    boolean error = false;
    try {
        TransactionContext context = xaResource.getTransactionContext();
        TransactionalMap m = context.getMap("m");
        m.put(random.nextInt(10), "value");
    } catch (Exception e) {
        logger.severe("Exception during transaction", e);
        error = true;
    } finally {
        close(error, xaResource);
    }
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) Transaction(javax.transaction.Transaction) TransactionContext(com.hazelcast.transaction.TransactionContext) RollbackException(javax.transaction.RollbackException) SystemException(javax.transaction.SystemException) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource)

Example 4 with HazelcastXAResource

use of com.hazelcast.transaction.HazelcastXAResource in project hazelcast by hazelcast.

the class ClientXATest method testWhenLockedOutOfTransaction.

@Test
public void testWhenLockedOutOfTransaction() throws Exception {
    Hazelcast.newHazelcastInstance();
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    IMap<Object, Object> map = client.getMap("map");
    map.put("key", "value");
    HazelcastXAResource xaResource = client.getXAResource();
    tm.begin();
    Transaction transaction = tm.getTransaction();
    transaction.enlistResource(xaResource);
    TransactionContext context = xaResource.getTransactionContext();
    TransactionalMap<Object, Object> transactionalMap = context.getMap("map");
    if (map.tryLock("key")) {
        transactionalMap.remove("key");
    }
    tm.commit();
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) Transaction(javax.transaction.Transaction) TransactionContext(com.hazelcast.transaction.TransactionContext) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) Test(org.junit.Test) SlowTest(com.hazelcast.test.annotation.SlowTest)

Example 5 with HazelcastXAResource

use of com.hazelcast.transaction.HazelcastXAResource in project hazelcast by hazelcast.

the class HazelcastOSGiInstanceTest method getXAResourceCalledSuccessfullyOverOSGiInstance.

@Test
public void getXAResourceCalledSuccessfullyOverOSGiInstance() {
    HazelcastXAResource mockXAResource = mock(HazelcastXAResource.class);
    HazelcastInstance mockHazelcastInstance = mock(HazelcastInstance.class);
    HazelcastOSGiInstance hazelcastOSGiInstance = HazelcastOSGiTestUtil.createHazelcastOSGiInstance(mockHazelcastInstance);
    when(mockHazelcastInstance.getXAResource()).thenReturn(mockXAResource);
    assertEquals(mockXAResource, hazelcastOSGiInstance.getXAResource());
    verify(mockHazelcastInstance).getXAResource();
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Aggregations

HazelcastXAResource (com.hazelcast.transaction.HazelcastXAResource)13 TransactionContext (com.hazelcast.transaction.TransactionContext)9 Test (org.junit.Test)9 HazelcastInstance (com.hazelcast.core.HazelcastInstance)8 Transaction (javax.transaction.Transaction)6 TransactionalMap (com.hazelcast.core.TransactionalMap)4 QuickTest (com.hazelcast.test.annotation.QuickTest)4 SlowTest (com.hazelcast.test.annotation.SlowTest)4 SystemException (javax.transaction.SystemException)4 Xid (javax.transaction.xa.Xid)4 SerializableXID (com.hazelcast.transaction.impl.xa.SerializableXID)3 RollbackException (javax.transaction.RollbackException)3 XAException (javax.transaction.xa.XAException)3 TestHazelcastInstanceFactory (com.hazelcast.test.TestHazelcastInstanceFactory)2 HazelcastTestSupport.randomString (com.hazelcast.test.HazelcastTestSupport.randomString)1 NightlyTest (com.hazelcast.test.annotation.NightlyTest)1 ParallelTest (com.hazelcast.test.annotation.ParallelTest)1 ExecutorService (java.util.concurrent.ExecutorService)1