use of org.apache.ignite.transactions.TransactionAlreadyCompletedException 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);
}
}
use of org.apache.ignite.transactions.TransactionAlreadyCompletedException 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);
}
}
use of org.apache.ignite.transactions.TransactionAlreadyCompletedException 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);
}
}
use of org.apache.ignite.transactions.TransactionAlreadyCompletedException in project ignite by apache.
the class IgniteUtils method exceptionConverters.
/**
* Gets map with converters to convert internal checked exceptions to public API unchecked exceptions.
*
* @return Exception converters.
*/
private static Map<Class<? extends IgniteCheckedException>, C1<IgniteCheckedException, IgniteException>> exceptionConverters() {
Map<Class<? extends IgniteCheckedException>, C1<IgniteCheckedException, IgniteException>> m = new HashMap<>();
m.put(IgniteInterruptedCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new IgniteInterruptedException(e.getMessage(), (InterruptedException) e.getCause());
}
});
m.put(IgniteFutureCancelledCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new IgniteFutureCancelledException(e.getMessage(), e);
}
});
m.put(IgniteFutureTimeoutCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new IgniteFutureTimeoutException(e.getMessage(), e);
}
});
m.put(ClusterGroupEmptyCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new ClusterGroupEmptyException(e.getMessage(), e);
}
});
m.put(ClusterTopologyCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
ClusterTopologyException topEx = new ClusterTopologyException(e.getMessage(), e);
ClusterTopologyCheckedException checked = (ClusterTopologyCheckedException) e;
if (checked.retryReadyFuture() != null)
topEx.retryReadyFuture(new IgniteFutureImpl<>(checked.retryReadyFuture()));
return topEx;
}
});
m.put(IgniteDeploymentCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new IgniteDeploymentException(e.getMessage(), e);
}
});
m.put(ComputeTaskTimeoutCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new ComputeTaskTimeoutException(e.getMessage(), e);
}
});
m.put(ComputeTaskCancelledCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new ComputeTaskCancelledException(e.getMessage(), e);
}
});
m.put(IgniteTxRollbackCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionRollbackException(e.getMessage(), e);
}
});
m.put(IgniteTxHeuristicCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionHeuristicException(e.getMessage(), e);
}
});
m.put(IgniteTxTimeoutCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
if (e.getCause() instanceof TransactionDeadlockException)
return new TransactionTimeoutException(e.getMessage(), e.getCause());
return new TransactionTimeoutException(e.getMessage(), e);
}
});
m.put(IgniteTxOptimisticCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionOptimisticException(e.getMessage(), e);
}
});
m.put(IgniteClientDisconnectedCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new IgniteClientDisconnectedException(((IgniteClientDisconnectedCheckedException) e).reconnectFuture(), e.getMessage(), e);
}
});
m.put(IgniteTxSerializationCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionSerializationException(e.getMessage(), e);
}
});
m.put(IgniteTxDuplicateKeyCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionDuplicateKeyException(e.getMessage(), e);
}
});
m.put(IgniteTxAlreadyCompletedCheckedException.class, new C1<IgniteCheckedException, IgniteException>() {
@Override
public IgniteException apply(IgniteCheckedException e) {
return new TransactionAlreadyCompletedException(e.getMessage(), e);
}
});
return m;
}
use of org.apache.ignite.transactions.TransactionAlreadyCompletedException 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);
}
}
Aggregations