IGNITE-45 - WIP
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/c0e60f89 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/c0e60f89 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/c0e60f89 Branch: refs/heads/ignite-45 Commit: c0e60f890da238c06c6a5c9f9bf0065246a52351 Parents: 03758ea Author: Alexey Goncharuk <agoncha...@gridgain.com> Authored: Wed Mar 4 18:12:57 2015 -0800 Committer: Alexey Goncharuk <agoncha...@gridgain.com> Committed: Wed Mar 4 18:12:57 2015 -0800 ---------------------------------------------------------------------- .../near/GridNearTxPrepareFuture.java | 4 +- .../cache/IgniteDynamicCacheStartSelfTest.java | 66 +++++++++++++++++++- 2 files changed, 67 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c0e60f89/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java index 05a53ee..9a81691 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java @@ -339,7 +339,7 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut GridDiscoveryTopologySnapshot snapshot = topFut.topologySnapshot(); - tx.topologyVersion(new AffinityTopologyVersion(snapshot.topologyVersion())); + tx.topologyVersion(topFut.topologyVersion()); tx.topologySnapshot(snapshot); // Make sure to add future before calling prepare. @@ -464,7 +464,7 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut assert snapshot != null; - AffinityTopologyVersion topVer = new AffinityTopologyVersion(snapshot.topologyVersion()); + AffinityTopologyVersion topVer = tx.topologyVersion(); assert topVer.topologyVersion() > 0; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c0e60f89/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java index ac92e72..29eac7c 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java @@ -177,11 +177,26 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ - public void testStartStopCacheSimple() throws Exception { + public void testStartStopCacheSimpleTransactional() throws Exception { + checkStartStopCacheSimple(CacheAtomicityMode.TRANSACTIONAL); + } + + /** + * @throws Exception If failed. + */ + public void testStartStopCacheSimpleAtomic() throws Exception { + checkStartStopCacheSimple(CacheAtomicityMode.ATOMIC); + } + + /** + * @throws Exception If failed. + */ + private void checkStartStopCacheSimple(CacheAtomicityMode mode) throws Exception { final IgniteKernal kernal = (IgniteKernal)grid(0); CacheConfiguration ccfg = new CacheConfiguration(); ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); + ccfg.setAtomicityMode(mode); ccfg.setName(CACHE_NAME); @@ -230,4 +245,53 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest { }, IllegalStateException.class, null); } } + + /** + * @throws Exception If failed. + */ + public void _testStartStopCacheAddNode() throws Exception { + final IgniteKernal kernal = (IgniteKernal)grid(0); + + CacheConfiguration ccfg = new CacheConfiguration(); + ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); + + ccfg.setName(CACHE_NAME); + + kernal.context().cache().dynamicStartCache(ccfg, F.<ClusterNode>alwaysTrue()).get(); + + startGrid(nodeCount()); + + try { + // Check that cache got deployed on new node. + IgniteCache<Object, Object> cache = ignite(nodeCount()).jcache(CACHE_NAME); + + cache.put("1", "1"); + + for (int g = 0; g < nodeCount(); g++) + assertEquals("1", grid(g).jcache(CACHE_NAME).get("1")); + + // Undeploy cache. + kernal.context().cache().dynamicStopCache(CACHE_NAME); + + startGrid(nodeCount() + 1); + + // Check that cache is not deployed on new node after undeploy. + for (int g = 0; g < nodeCount(); g++) { + final IgniteKernal kernal0 = (IgniteKernal)grid(g); + + for (IgniteInternalFuture f : kernal0.context().cache().context().exchange().exchangeFutures()) + f.get(); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + return kernal0.jcache(CACHE_NAME); + } + }, IllegalArgumentException.class, null); + } + } + finally { + stopGrid(nodeCount() + 1); + stopGrid(nodeCount()); + } + } }