Search in sources :

Example 46 with TransactionException

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

the class MapTransactionLockingTest method testTxnReplace_whenReplaceIfSameFails_keyShouldRemainUnlockedDuringTransaction.

@Test
public void testTxnReplace_whenReplaceIfSameFails_keyShouldRemainUnlockedDuringTransaction() throws InterruptedException {
    final HazelcastInstance hazelcastInstance = createHazelcastInstance(getConfig());
    final IMap<String, Object> map = hazelcastInstance.getMap(mapName);
    hazelcastInstance.executeTransaction(new TransactionalTask<Object>() {

        @Override
        public Object execute(TransactionalTaskContext transactionContext) throws TransactionException {
            TransactionalMap<String, Object> transactionalMap = transactionContext.getMap(mapName);
            boolean replace = transactionalMap.replace(key, value + "other", value);
            assertFalse(replace);
            assertFalse("Key remains locked!", map.isLocked(key));
            return null;
        }
    });
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionException(com.hazelcast.transaction.TransactionException) TransactionalTaskContext(com.hazelcast.transaction.TransactionalTaskContext) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Example 47 with TransactionException

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

the class MapTransactionRegressionTest method test_Issue615_ValuesWithPredicate.

@Test
public void test_Issue615_ValuesWithPredicate() throws TransactionException {
    Config config = getConfig();
    final TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
    final HazelcastInstance h1 = factory.newHazelcastInstance(config);
    final HazelcastInstance h2 = factory.newHazelcastInstance(config);
    final IMap map2 = h2.getMap("default");
    final SampleObjects.Employee emp1 = new SampleObjects.Employee("abc-123-xvz", 34, true, 10D);
    map2.put(1, emp1);
    final SampleObjects.Employee emp2 = new SampleObjects.Employee("xvz", 4, true, 10D);
    boolean b = h1.executeTransaction(options, new TransactionalTask<Boolean>() {

        public Boolean execute(TransactionalTaskContext context) throws TransactionException {
            final TransactionalMap<Object, Object> txMap = context.getMap("default");
            assertEquals(0, txMap.values(new SqlPredicate("age <= 10")).size());
            txMap.put(2, emp2);
            Collection coll = txMap.values(new SqlPredicate("age <= 10"));
            Iterator<Object> iterator = coll.iterator();
            while (iterator.hasNext()) {
                final SampleObjects.Employee e = (SampleObjects.Employee) iterator.next();
                assertEquals(emp2, e);
            }
            coll = txMap.values(new SqlPredicate("age > 30 "));
            iterator = coll.iterator();
            while (iterator.hasNext()) {
                final SampleObjects.Employee e = (SampleObjects.Employee) iterator.next();
                assertEquals(emp1, e);
            }
            txMap.remove(2);
            coll = txMap.values(new SqlPredicate("age <= 10 "));
            assertEquals(0, coll.size());
            return true;
        }
    });
    assertEquals(0, map2.values(new SqlPredicate("age <= 10")).size());
    assertEquals(1, map2.values(new SqlPredicate("age = 34")).size());
    h1.shutdown();
    h2.shutdown();
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) SampleObjects(com.hazelcast.query.SampleObjects) Config(com.hazelcast.config.Config) TransactionalTaskContext(com.hazelcast.transaction.TransactionalTaskContext) SqlPredicate(com.hazelcast.query.SqlPredicate) IMap(com.hazelcast.core.IMap) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionException(com.hazelcast.transaction.TransactionException) Iterator(java.util.Iterator) Collection(java.util.Collection) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test)

Example 48 with TransactionException

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

the class MapTransactionRegressionTest method test_Issue615_values.

@Test
public void test_Issue615_values() throws TransactionException {
    Config config = getConfig();
    final TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
    final HazelcastInstance h1 = factory.newHazelcastInstance(config);
    final HazelcastInstance h2 = factory.newHazelcastInstance(config);
    final IMap map2 = h2.getMap("default");
    map2.put("1", "1");
    map2.put("2", "2");
    boolean b = h1.executeTransaction(options, new TransactionalTask<Boolean>() {

        public Boolean execute(TransactionalTaskContext context) throws TransactionException {
            final TransactionalMap<Object, Object> txMap = context.getMap("default");
            txMap.put("3", "3");
            assertEquals(3, txMap.values().size());
            map2.put("4", "4");
            assertEquals(4, txMap.values().size());
            txMap.remove("1");
            assertEquals(3, txMap.values().size());
            map2.remove("2");
            assertEquals(2, txMap.values().size());
            assertEquals(2, txMap.size());
            txMap.put("12", "32");
            assertEquals(2, map2.values().size());
            return true;
        }
    });
    assertEquals(3, map2.values().size());
    h1.shutdown();
    h2.shutdown();
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) IMap(com.hazelcast.core.IMap) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionException(com.hazelcast.transaction.TransactionException) Config(com.hazelcast.config.Config) TransactionalTaskContext(com.hazelcast.transaction.TransactionalTaskContext) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test)

Example 49 with TransactionException

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

the class MapTransactionRegressionTest method test_Issue615_keySet.

@Test
public void test_Issue615_keySet() throws TransactionException {
    Config config = getConfig();
    final TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
    final HazelcastInstance h1 = factory.newHazelcastInstance(config);
    final HazelcastInstance h2 = factory.newHazelcastInstance(config);
    final IMap map = h2.getMap("default");
    map.put("1", "1");
    map.put("2", "2");
    boolean b = h1.executeTransaction(options, new TransactionalTask<Boolean>() {

        public Boolean execute(TransactionalTaskContext context) throws TransactionException {
            final TransactionalMap<Object, Object> txMap = context.getMap("default");
            txMap.put("3", "3");
            assertEquals(3, txMap.keySet().size());
            map.put("4", "4");
            assertEquals(4, txMap.keySet().size());
            txMap.remove("1");
            assertEquals(3, txMap.keySet().size());
            map.remove("2");
            assertEquals(2, txMap.keySet().size());
            assertEquals(2, txMap.size());
            return true;
        }
    });
    assertEquals(2, map.keySet().size());
    // raise an exception and rollback changes.
    try {
        boolean b2 = h1.executeTransaction(options, new TransactionalTask<Boolean>() {

            public Boolean execute(TransactionalTaskContext context) throws TransactionException {
                final TransactionalMap<Object, Object> txMap = context.getMap("default");
                txMap.put("5", "5");
                assertEquals(3, txMap.keySet().size());
                assertEquals(2, map.keySet().size());
                throw new DummyUncheckedHazelcastTestException();
            }
        });
    } catch (Exception e) {
        if (!(e instanceof DummyUncheckedHazelcastTestException)) {
            throw new RuntimeException(e);
        }
    }
    assertEquals(2, map.keySet().size());
    h1.shutdown();
    h2.shutdown();
}
Also used : TransactionalMap(com.hazelcast.core.TransactionalMap) Config(com.hazelcast.config.Config) TransactionalTaskContext(com.hazelcast.transaction.TransactionalTaskContext) TransactionException(com.hazelcast.transaction.TransactionException) IMap(com.hazelcast.core.IMap) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionException(com.hazelcast.transaction.TransactionException) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test)

Example 50 with TransactionException

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

the class MapTransactionStressTest method testTransactionAtomicity_whenMapGetIsUsed_withTransaction.

@Test
public void testTransactionAtomicity_whenMapGetIsUsed_withTransaction() throws InterruptedException {
    final HazelcastInstance hz = createHazelcastInstance(createConfigWithDummyTxService());
    final String name = HazelcastTestSupport.generateRandomString(5);
    Thread producerThread = startProducerThread(hz, name);
    try {
        IQueue<String> q = hz.getQueue(name);
        for (int i = 0; i < 1000; i++) {
            String id = q.poll();
            if (id != null) {
                TransactionContext tx = hz.newTransactionContext();
                try {
                    tx.beginTransaction();
                    TransactionalMap<String, Object> map = tx.getMap(name);
                    Object value = map.get(id);
                    Assert.assertNotNull(value);
                    map.delete(id);
                    tx.commitTransaction();
                } catch (TransactionException e) {
                    tx.rollbackTransaction();
                    e.printStackTrace();
                }
            } else {
                LockSupport.parkNanos(100);
            }
        }
    } finally {
        stopProducerThread(producerThread);
    }
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionException(com.hazelcast.transaction.TransactionException) TransactionContext(com.hazelcast.transaction.TransactionContext) DistributedObject(com.hazelcast.core.DistributedObject) TransactionalObject(com.hazelcast.transaction.TransactionalObject) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test)

Aggregations

TransactionException (com.hazelcast.transaction.TransactionException)91 Test (org.junit.Test)74 HazelcastInstance (com.hazelcast.core.HazelcastInstance)68 QuickTest (com.hazelcast.test.annotation.QuickTest)66 ParallelTest (com.hazelcast.test.annotation.ParallelTest)62 TransactionalTaskContext (com.hazelcast.transaction.TransactionalTaskContext)62 TransactionalMap (com.hazelcast.core.TransactionalMap)60 NightlyTest (com.hazelcast.test.annotation.NightlyTest)51 Config (com.hazelcast.config.Config)39 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)39 TestHazelcastInstanceFactory (com.hazelcast.test.TestHazelcastInstanceFactory)35 MapStoreConfig (com.hazelcast.config.MapStoreConfig)32 IMap (com.hazelcast.core.IMap)18 TransactionContext (com.hazelcast.transaction.TransactionContext)14 HazelcastInstanceNotActiveException (com.hazelcast.core.HazelcastInstanceNotActiveException)7 ExpectedRuntimeException (com.hazelcast.test.ExpectedRuntimeException)7 TransactionOptions (com.hazelcast.transaction.TransactionOptions)7 Mockito.anyObject (org.mockito.Mockito.anyObject)7 TransactionNotActiveException (com.hazelcast.transaction.TransactionNotActiveException)6 MapStoreAdapter (com.hazelcast.core.MapStoreAdapter)5