IGNITE-3601 Read-only optimistic transaction shouldn't throw an exception if entry version was not changed. Correctional unit tests.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9b053e5c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9b053e5c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9b053e5c Branch: refs/heads/ignite-3601p Commit: 9b053e5cfb62913373c425df0e03d0dde1405701 Parents: 065f040 Author: vd-pyatkov <vpyat...@gridgain.com> Authored: Tue Aug 30 13:58:30 2016 +0300 Committer: vd-pyatkov <vpyat...@gridgain.com> Committed: Tue Aug 30 13:58:30 2016 +0300 ---------------------------------------------------------------------- .../CacheSerializableTransactionsTest.java | 28 +++++++++++++++++--- .../processors/cache/CacheTxFastFinishTest.java | 2 +- 2 files changed, 26 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9b053e5c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java index 3d4f850..4689724 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java @@ -56,6 +56,7 @@ import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.IgniteInternalFuture; +import org.apache.ignite.internal.IgniteKernal; import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.G; @@ -65,6 +66,7 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteClosure; import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; +import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode; import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; import org.apache.ignite.spi.swapspace.inmemory.GridTestSwapSpaceSpi; @@ -1367,10 +1369,16 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest { tx.commit(); } - fail(); + if (!isKeyLocal(ignite0, cache, key)) + fail(); + + log.info("Read only optimistic commit."); } catch (TransactionOptimisticException e) { log.info("Expected exception: " + e); + + if (isKeyLocal(ignite0, cache, key)) + fail(); } checkValue(key, 3, cache.getName()); @@ -1383,6 +1391,18 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest { } /** + * Checks, whether the key is stored locally. + * @param ignite0 Ignite 0. + * @param cache Cache. + * @param key Key. + */ + private boolean isKeyLocal(Ignite ignite0, IgniteCache<Integer, Integer> cache, Integer key) { + return ((TcpDiscoveryNode)((ArrayList)ignite0.affinity(cache.getName()) + .mapKeyToPrimaryAndBackups(ignite0.affinity(cache.getName()).affinityKey(key))) + .get(0)).id().equals(((IgniteKernal)ignite0).getLocalNodeId()); + } + + /** * @throws Exception If failed. */ public void testTxConflictReplace() throws Exception { @@ -2636,10 +2656,11 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest { tx.commit(); } - fail(); + log.info("Read only optimistic commit."); } catch (TransactionOptimisticException e) { log.info("Expected exception: " + e); + fail(); } checkValue(key1, -1, cacheName); @@ -2903,10 +2924,11 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest { tx.commit(); } - fail(); + log.info("Read only optimistic commit."); } catch (TransactionOptimisticException e) { log.info("Expected exception: " + e); + fail(); } try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) { http://git-wip-us.apache.org/repos/asf/ignite/blob/9b053e5c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java index 35b1405..f9c6683 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java @@ -173,7 +173,7 @@ public class CacheTxFastFinishTest extends GridCommonAbstractTest { try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) { cache.get(i); - checkNormalTxFinish(tx, commit); + checkFastTxFinish(tx, commit); } try (Transaction tx = txs.txStart(PESSIMISTIC, REPEATABLE_READ)) {