IGNITE-721 - Fixed NPE in fair affinity
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d3eac74 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d3eac74 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d3eac74 Branch: refs/heads/ignite-sprint-3 Commit: 2d3eac747656132ff877c76e70603580f6cc2efb Parents: 1757473 Author: Alexey Goncharuk <agoncha...@gridgain.com> Authored: Fri Apr 10 10:47:22 2015 -0700 Committer: Alexey Goncharuk <agoncha...@gridgain.com> Committed: Fri Apr 10 10:47:22 2015 -0700 ---------------------------------------------------------------------- .../GridDhtPartitionsExchangeFuture.java | 3 ++ .../fair/GridFairAffinityFunctionSelfTest.java | 2 -- .../IgniteFairAffinityDynamicCacheSelfTest.java | 35 +++++++++++--------- 3 files changed, 22 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d3eac74/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java index 18f3035..a28f69c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java @@ -313,6 +313,9 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT * Rechecks topology. */ private void initTopology(GridCacheContext cacheCtx) throws IgniteCheckedException { + if (stopping(cacheCtx.cacheId())) + return; + if (canCalculateAffinity(cacheCtx)) { if (log.isDebugEnabled()) log.debug("Will recalculate affinity [locNodeId=" + cctx.localNodeId() + ", exchId=" + exchId + ']'); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d3eac74/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/GridFairAffinityFunctionSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/GridFairAffinityFunctionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/GridFairAffinityFunctionSelfTest.java index 2dd2a8c..dcf4508 100644 --- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/GridFairAffinityFunctionSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/GridFairAffinityFunctionSelfTest.java @@ -254,8 +254,6 @@ public class GridFairAffinityFunctionSelfTest extends GridCommonAbstractTest { log().warning("max=" + max + ", min=" + min + ", ideal=" + ideal + ", minDev=" + deviation(min, ideal) + "%, " + "maxDev=" + deviation(max, ideal) + "%"); - - assertTrue("max=" + max + ", min=" + min, max - min < (keyBackups + 1) * topSize); } private static int deviation(int val, int ideal) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d3eac74/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/IgniteFairAffinityDynamicCacheSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/IgniteFairAffinityDynamicCacheSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/IgniteFairAffinityDynamicCacheSelfTest.java index e51be58..90571a4 100644 --- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/IgniteFairAffinityDynamicCacheSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/fair/IgniteFairAffinityDynamicCacheSelfTest.java @@ -70,27 +70,30 @@ public class IgniteFairAffinityDynamicCacheSelfTest extends GridCommonAbstractTe * @throws Exception If failed. */ public void testStartStopCache() throws Exception { - CacheConfiguration<Integer, Integer> cacheCfg = new CacheConfiguration<>(); + for (int k = 0; k < 10; k++) { + CacheConfiguration<Integer, Integer> cacheCfg = new CacheConfiguration<>(); - cacheCfg.setCacheMode(CacheMode.PARTITIONED); - cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC); - cacheCfg.setBackups(1); - cacheCfg.setName("test"); - cacheCfg.setAffinity(new FairAffinityFunction()); + cacheCfg.setCacheMode(CacheMode.PARTITIONED); + cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC); + cacheCfg.setBackups(1); + cacheCfg.setName("test"); + cacheCfg.setAffinity(new FairAffinityFunction()); - final IgniteCache<Integer, Integer> cache = ignite(0).createCache(cacheCfg); + final IgniteCache<Integer, Integer> cache = ignite(0).createCache(cacheCfg); - for (int i = 0; i < 10_000; i++) - cache.put(i, i); + for (int i = 0; i < 10_000; i++) + cache.put(i, i); - IgniteInternalFuture<Object> destFut = GridTestUtils.runAsync(new Callable<Object>() { - @Override public Object call() throws Exception { - ignite(0).destroyCache(cache.getName()); + IgniteInternalFuture<Object> destFut = GridTestUtils.runAsync(new Callable<Object>() { + @Override + public Object call() throws Exception { + ignite(0).destroyCache(cache.getName()); - return null; - } - }); + return null; + } + }); - destFut.get(2000L); + destFut.get(2000L); + } } }