Search in sources :

Example 1 with TransactionStateChangedEvent

use of org.apache.ignite.events.TransactionStateChangedEvent in project ignite by apache.

the class TxRollbackOnIncorrectParamsTest method testLabelFilledRemoteGuarantee.

/**
 */
@Test
public void testLabelFilledRemoteGuarantee() throws Exception {
    Ignite ignite = startGrid(0);
    Ignite remote = startGrid(1);
    IgniteCache cacheLocal = ignite.getOrCreateCache(defaultCacheConfiguration());
    IgniteCache cacheRemote = remote.getOrCreateCache(defaultCacheConfiguration());
    ignite.events().remoteListen(null, (IgnitePredicate<Event>) e -> {
        assert e instanceof TransactionStateChangedEvent;
        TransactionStateChangedEvent evt = (TransactionStateChangedEvent) e;
        Transaction tx = evt.tx();
        if (tx.label() == null)
            tx.setRollbackOnly();
        return true;
    }, EVT_TX_STARTED);
    try (Transaction tx = ignite.transactions().withLabel("test").txStart()) {
        cacheLocal.put(1, 1);
        tx.commit();
    }
    try (Transaction tx = remote.transactions().withLabel("test").txStart()) {
        cacheRemote.put(1, 2);
        tx.commit();
    }
    try (Transaction tx = ignite.transactions().txStart()) {
        cacheLocal.put(1, 3);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
    try (Transaction tx = remote.transactions().txStart()) {
        cacheRemote.put(1, 4);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
}
Also used : TransactionIsolation(org.apache.ignite.transactions.TransactionIsolation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) EventType(org.apache.ignite.events.EventType) IgniteException(org.apache.ignite.IgniteException) Event(org.apache.ignite.events.Event) Transaction(org.apache.ignite.transactions.Transaction) TransactionConcurrency(org.apache.ignite.transactions.TransactionConcurrency) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) Test(org.junit.Test) EVT_TX_STARTED(org.apache.ignite.events.EventType.EVT_TX_STARTED) UUID(java.util.UUID) Ignite(org.apache.ignite.Ignite) IgniteCache(org.apache.ignite.IgniteCache) GridTestUtils(org.apache.ignite.testframework.GridTestUtils) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) MvccFeatureChecker(org.apache.ignite.testframework.MvccFeatureChecker) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) CacheException(javax.cache.CacheException) Transaction(org.apache.ignite.transactions.Transaction) CacheException(javax.cache.CacheException) IgniteCache(org.apache.ignite.IgniteCache) Event(org.apache.ignite.events.Event) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) Ignite(org.apache.ignite.Ignite) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 2 with TransactionStateChangedEvent

use of org.apache.ignite.events.TransactionStateChangedEvent in project ignite by apache.

the class TxRollbackOnIncorrectParamsTest method testLabelFilledLocalGuarantee.

/**
 */
@Test
public void testLabelFilledLocalGuarantee() throws Exception {
    Ignite ignite = startGrid(0);
    ignite.events().localListen((IgnitePredicate<Event>) e -> {
        assert e instanceof TransactionStateChangedEvent;
        TransactionStateChangedEvent evt = (TransactionStateChangedEvent) e;
        Transaction tx = evt.tx();
        if (tx.label() == null)
            tx.setRollbackOnly();
        return true;
    }, EVT_TX_STARTED);
    IgniteCache cache = ignite.getOrCreateCache(defaultCacheConfiguration());
    try (Transaction tx = ignite.transactions().withLabel("test").txStart()) {
        cache.put(1, 1);
        tx.commit();
    }
    try (Transaction tx = ignite.transactions().txStart()) {
        cache.put(1, 2);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
}
Also used : TransactionIsolation(org.apache.ignite.transactions.TransactionIsolation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) EventType(org.apache.ignite.events.EventType) IgniteException(org.apache.ignite.IgniteException) Event(org.apache.ignite.events.Event) Transaction(org.apache.ignite.transactions.Transaction) TransactionConcurrency(org.apache.ignite.transactions.TransactionConcurrency) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) Test(org.junit.Test) EVT_TX_STARTED(org.apache.ignite.events.EventType.EVT_TX_STARTED) UUID(java.util.UUID) Ignite(org.apache.ignite.Ignite) IgniteCache(org.apache.ignite.IgniteCache) GridTestUtils(org.apache.ignite.testframework.GridTestUtils) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) MvccFeatureChecker(org.apache.ignite.testframework.MvccFeatureChecker) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) CacheException(javax.cache.CacheException) Transaction(org.apache.ignite.transactions.Transaction) CacheException(javax.cache.CacheException) IgniteCache(org.apache.ignite.IgniteCache) Event(org.apache.ignite.events.Event) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) Ignite(org.apache.ignite.Ignite) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 3 with TransactionStateChangedEvent

use of org.apache.ignite.events.TransactionStateChangedEvent in project ignite by apache.

the class TxRollbackOnIncorrectParamsTest method testTimeoutSetRemoteGuarantee.

/**
 */
@Test
public void testTimeoutSetRemoteGuarantee() throws Exception {
    Ignite ignite = startGrid(0);
    Ignite remote = startGrid(1);
    IgniteCache cacheLocal = ignite.getOrCreateCache(defaultCacheConfiguration());
    IgniteCache cacheRemote = remote.getOrCreateCache(defaultCacheConfiguration());
    ignite.events().remoteListen(null, (IgnitePredicate<Event>) e -> {
        assert e instanceof TransactionStateChangedEvent;
        TransactionStateChangedEvent evt = (TransactionStateChangedEvent) e;
        Transaction tx = evt.tx();
        if (tx.timeout() == 0)
            tx.setRollbackOnly();
        return true;
    }, EVT_TX_STARTED);
    try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ, 100, 2)) {
        cacheLocal.put(1, 1);
        tx.commit();
    }
    try (Transaction tx = remote.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ, 100, 2)) {
        cacheRemote.put(1, 2);
        tx.commit();
    }
    try (Transaction tx = ignite.transactions().txStart()) {
        cacheLocal.put(1, 3);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
    try (Transaction tx = remote.transactions().txStart()) {
        cacheRemote.put(1, 4);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
}
Also used : TransactionIsolation(org.apache.ignite.transactions.TransactionIsolation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) EventType(org.apache.ignite.events.EventType) IgniteException(org.apache.ignite.IgniteException) Event(org.apache.ignite.events.Event) Transaction(org.apache.ignite.transactions.Transaction) TransactionConcurrency(org.apache.ignite.transactions.TransactionConcurrency) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) Test(org.junit.Test) EVT_TX_STARTED(org.apache.ignite.events.EventType.EVT_TX_STARTED) UUID(java.util.UUID) Ignite(org.apache.ignite.Ignite) IgniteCache(org.apache.ignite.IgniteCache) GridTestUtils(org.apache.ignite.testframework.GridTestUtils) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) MvccFeatureChecker(org.apache.ignite.testframework.MvccFeatureChecker) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) CacheException(javax.cache.CacheException) Transaction(org.apache.ignite.transactions.Transaction) CacheException(javax.cache.CacheException) IgniteCache(org.apache.ignite.IgniteCache) Event(org.apache.ignite.events.Event) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) Ignite(org.apache.ignite.Ignite) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 4 with TransactionStateChangedEvent

use of org.apache.ignite.events.TransactionStateChangedEvent in project ignite by apache.

the class TxStateChangeEventTest method check.

/**
 */
private void check(boolean loc) throws Exception {
    Ignite ignite = startGrids(5);
    final IgniteEvents evts = loc ? ignite.events() : grid(3).events();
    if (loc)
        evts.localListen((IgnitePredicate<Event>) e -> {
            assert e instanceof TransactionStateChangedEvent;
            checkEvent((TransactionStateChangedEvent) e);
            return true;
        }, EVTS_TX);
    else
        evts.remoteListen(null, (IgnitePredicate<Event>) e -> {
            assert e instanceof TransactionStateChangedEvent;
            checkEvent((TransactionStateChangedEvent) e);
            return false;
        }, EVTS_TX);
    IgniteTransactions txs = ignite.transactions();
    IgniteCache<Integer, Integer> cache = ignite.getOrCreateCache(getCacheConfig());
    checkCommit(txs, cache);
    if (!MvccFeatureChecker.forcedMvcc())
        checkSuspendResume(txs, cache);
    checkRollback(txs, cache);
}
Also used : IgniteEvents(org.apache.ignite.IgniteEvents) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) Ignite(org.apache.ignite.Ignite) IgniteTransactions(org.apache.ignite.IgniteTransactions) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent)

Example 5 with TransactionStateChangedEvent

use of org.apache.ignite.events.TransactionStateChangedEvent in project ignite by apache.

the class TxRollbackOnIncorrectParamsTest method testTimeoutSetLocalGuarantee.

/**
 */
@Test
public void testTimeoutSetLocalGuarantee() throws Exception {
    Ignite ignite = startGrid(0);
    ignite.events().localListen((IgnitePredicate<Event>) e -> {
        assert e instanceof TransactionStateChangedEvent;
        TransactionStateChangedEvent evt = (TransactionStateChangedEvent) e;
        Transaction tx = evt.tx();
        if (tx.timeout() < 200)
            tx.setRollbackOnly();
        return true;
    }, EVT_TX_STARTED);
    IgniteCache cache = ignite.getOrCreateCache(defaultCacheConfiguration());
    try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ, 200, 2)) {
        cache.put(1, 1);
        tx.commit();
    }
    try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ, 100, 2)) {
        cache.put(1, 2);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
    try (Transaction tx = ignite.transactions().txStart()) {
        cache.put(1, 3);
        tx.commit();
        fail("Should fail prior this line.");
    } catch (CacheException ex) {
        if (MvccFeatureChecker.forcedMvcc())
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionAlreadyCompletedException);
        else
            assertTrue(ex.toString(), ex.getCause() instanceof TransactionRollbackException);
    }
}
Also used : TransactionIsolation(org.apache.ignite.transactions.TransactionIsolation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) EventType(org.apache.ignite.events.EventType) IgniteException(org.apache.ignite.IgniteException) Event(org.apache.ignite.events.Event) Transaction(org.apache.ignite.transactions.Transaction) TransactionConcurrency(org.apache.ignite.transactions.TransactionConcurrency) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) Test(org.junit.Test) EVT_TX_STARTED(org.apache.ignite.events.EventType.EVT_TX_STARTED) UUID(java.util.UUID) Ignite(org.apache.ignite.Ignite) IgniteCache(org.apache.ignite.IgniteCache) GridTestUtils(org.apache.ignite.testframework.GridTestUtils) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) MvccFeatureChecker(org.apache.ignite.testframework.MvccFeatureChecker) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) CacheException(javax.cache.CacheException) Transaction(org.apache.ignite.transactions.Transaction) CacheException(javax.cache.CacheException) IgniteCache(org.apache.ignite.IgniteCache) Event(org.apache.ignite.events.Event) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) Ignite(org.apache.ignite.Ignite) TransactionAlreadyCompletedException(org.apache.ignite.transactions.TransactionAlreadyCompletedException) TransactionRollbackException(org.apache.ignite.transactions.TransactionRollbackException) TransactionStateChangedEvent(org.apache.ignite.events.TransactionStateChangedEvent) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Aggregations

Ignite (org.apache.ignite.Ignite)6 TransactionStateChangedEvent (org.apache.ignite.events.TransactionStateChangedEvent)6 IgnitePredicate (org.apache.ignite.lang.IgnitePredicate)6 UUID (java.util.UUID)5 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)5 CacheException (javax.cache.CacheException)5 IgniteCache (org.apache.ignite.IgniteCache)5 IgniteException (org.apache.ignite.IgniteException)5 IgniteConfiguration (org.apache.ignite.configuration.IgniteConfiguration)5 Event (org.apache.ignite.events.Event)5 EventType (org.apache.ignite.events.EventType)5 EVT_TX_STARTED (org.apache.ignite.events.EventType.EVT_TX_STARTED)5 IgniteBiPredicate (org.apache.ignite.lang.IgniteBiPredicate)5 GridTestUtils (org.apache.ignite.testframework.GridTestUtils)5 MvccFeatureChecker (org.apache.ignite.testframework.MvccFeatureChecker)5 GridCommonAbstractTest (org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)5 Transaction (org.apache.ignite.transactions.Transaction)5 TransactionAlreadyCompletedException (org.apache.ignite.transactions.TransactionAlreadyCompletedException)5 TransactionConcurrency (org.apache.ignite.transactions.TransactionConcurrency)5 TransactionIsolation (org.apache.ignite.transactions.TransactionIsolation)5