Search in sources :

Example 6 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 7 with HazelcastXAResource

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

the class ClientXATest method testRollbackOnTimeout.

@Test
public void testRollbackOnTimeout() throws Exception {
    Hazelcast.newHazelcastInstance();
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    String name = randomString();
    IQueue<Object> queue = client.getQueue(name);
    queue.offer(randomString());
    HazelcastXAResource xaResource = client.getXAResource();
    tm.setTransactionTimeout(3);
    tm.begin();
    Transaction transaction = tm.getTransaction();
    transaction.enlistResource(xaResource);
    TransactionContext context = xaResource.getTransactionContext();
    try {
        context.getQueue(name).take();
        sleepAtLeastSeconds(5);
        tm.commit();
        fail();
    } catch (RollbackException ignored) {
    // Transaction already rolled-back due to timeout, no need to call tm.rollback explicitly
    }
    assertEquals("Queue size should be 1", 1, queue.size());
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) Transaction(javax.transaction.Transaction) TransactionContext(com.hazelcast.transaction.TransactionContext) HazelcastTestSupport.randomString(com.hazelcast.test.HazelcastTestSupport.randomString) RollbackException(javax.transaction.RollbackException) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) Test(org.junit.Test) SlowTest(com.hazelcast.test.annotation.SlowTest)

Example 8 with HazelcastXAResource

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

the class HazelcastXATest method startTX.

private void startTX(final HazelcastInstance instance, final CountDownLatch nodeShutdownLatch) {
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                HazelcastXAResource xaResource = instance.getXAResource();
                Xid xid = new SerializableXID(42, "globalTransactionId".getBytes(), "branchQualifier".getBytes());
                xaResource.start(xid, XAResource.TMNOFLAGS);
                TransactionContext context = xaResource.getTransactionContext();
                final TransactionalMap<Object, Object> map = context.getMap("map");
                map.put("key", "value");
                xaResource.prepare(xid);
                instance.shutdown();
                nodeShutdownLatch.countDown();
            } catch (XAException e) {
                e.printStackTrace();
            }
        }
    }).start();
}
Also used : Xid(javax.transaction.xa.Xid) SerializableXID(com.hazelcast.transaction.impl.xa.SerializableXID) XAException(javax.transaction.xa.XAException) TransactionContext(com.hazelcast.transaction.TransactionContext) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource)

Example 9 with HazelcastXAResource

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

the class HazelcastXATest method testIsSame.

@Test
public void testIsSame() throws Exception {
    TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
    HazelcastInstance instance1 = factory.newHazelcastInstance();
    HazelcastInstance instance2 = factory.newHazelcastInstance();
    HazelcastXAResource resource1 = instance1.getXAResource();
    HazelcastXAResource resource2 = instance2.getXAResource();
    assertTrue(resource1.isSameRM(resource2));
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 10 with HazelcastXAResource

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

the class HazelcastXATest method testRollback.

@Test
public void testRollback() throws Exception {
    HazelcastInstance instance = createHazelcastInstance();
    HazelcastXAResource xaResource = instance.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(instance.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) SystemException(javax.transaction.SystemException) XAException(javax.transaction.xa.XAException) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

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