@Override public void applyx(Ignite ignite, final IgniteCache<Integer, Integer> cache) throws Exception { for (TransactionIsolation isolation : TransactionIsolation.values()) { final Transaction tx = ignite.transactions().txStart(OPTIMISTIC, isolation); cache.put(1, 1); try { tx.resume(); fail("Exception must be thrown"); } catch (Throwable e) { assertTrue(X.hasCause(e, IgniteException.class)); assertFalse(X.hasCause(e, AssertionError.class)); } tx.close(); assertFalse(cache.containsKey(1)); } } });
/** * @param txs Transaction manager. * @param cache Ignite cache. */ private void checkSuspendResume(IgniteTransactions txs, IgniteCache<Integer, Integer> cache) throws IgniteInterruptedCheckedException { // create & suspend & resume & commit try (Transaction tx = txs.withLabel(lb).txStart( TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE, timeout, 3)) { cache.put(2, 7); tx.suspend(); U.sleep(100); tx.resume(); tx.commit(); } assertTrue( creation.get() && commit.get() && !rollback.get() && suspend.get() && resume.get()); clear(); }
@Override public void applyx(Ignite ignite, final IgniteCache<Integer, Integer> cache) throws Exception { for (TransactionIsolation tx1Isolation : TransactionIsolation.values()) { for (TransactionIsolation tx2Isolation : TransactionIsolation.values()) { Transaction tx1 = ignite.transactions().txStart(OPTIMISTIC, tx1Isolation); cache.put(1, 1); tx1.suspend(); assertFalse(cache.containsKey(1)); Transaction tx2 = ignite.transactions().txStart(OPTIMISTIC, tx2Isolation); cache.put(1, 2); tx2.suspend(); assertFalse(cache.containsKey(1)); tx1.resume(); assertEquals(1, (int)cache.get(1)); tx1.suspend(); tx2.resume(); assertEquals(2, (int)cache.get(1)); tx2.rollback(); tx1.resume(); tx1.rollback(); cache.removeAll(); } } } });
@Override public void applyx(Ignite ignite, final IgniteCache<Integer, Integer> cache) throws Exception { for (final CI1Exc<Transaction> txOperation : SUSPENDED_TX_PROHIBITED_OPS) { for (TransactionIsolation isolation : TransactionIsolation.values()) { final Transaction tx = ignite.transactions().txStart(OPTIMISTIC, isolation); cache.put(1, 1); tx.suspend(); multithreaded(new RunnableX() { @Override public void runx() throws Exception { GridTestUtils.assertThrowsWithCause(txOperation, tx, IgniteException.class); } }, 1); tx.resume(); tx.close(); assertNull(cache.get(1)); } } } });
@Override public void applyx(Ignite ignite, final IgniteCache<Integer, Integer> cache) throws Exception { for (CI1Exc<Transaction> txOperation : SUSPENDED_TX_PROHIBITED_OPS) { for (TransactionIsolation isolation : TransactionIsolation.values()) { Transaction tx = ignite.transactions().txStart(OPTIMISTIC, isolation); cache.put(1, 1); tx.suspend(); GridTestUtils.assertThrowsWithCause(txOperation, tx, IgniteException.class); tx.resume(); tx.close(); assertNull(cache.get(1)); } } } });
@Override public void applyx(Ignite ignite, final IgniteCache<Integer, Integer> cache) throws Exception { for (TransactionIsolation tx1Isolation : TransactionIsolation.values()) { for (TransactionIsolation tx2Isolation : TransactionIsolation.values()) { Transaction tx1 = ignite.transactions().txStart(OPTIMISTIC, tx1Isolation); cache.put(1, 1); tx1.suspend(); assertFalse(cache.containsKey(1)); Transaction tx2 = ignite.transactions().txStart(OPTIMISTIC, tx2Isolation); cache.put(1, 2); tx2.commit(); assertEquals(2, (int)cache.get(1)); tx1.resume(); assertEquals(1, (int)cache.get(1)); tx1.close(); cache.removeAll(); } } } });