Repository: incubator-ignite Updated Branches: refs/heads/ignite-1109 e32ac42bf -> e2e3c7f08
#ignite-1109: fix compatibility suite. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e2e3c7f0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e2e3c7f0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e2e3c7f0 Branch: refs/heads/ignite-1109 Commit: e2e3c7f08e21ef91d20b412bf72d4d05abf2e35a Parents: e32ac42 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Thu Jul 9 13:15:35 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Thu Jul 9 13:15:35 2015 +0300 ---------------------------------------------------------------------- .../AffinityNodeAddressHashResolver.java | 1 + .../affinity/AffinityNodeIdHashResolver.java | 1 + .../processors/cache/GridCacheProcessor.java | 75 +++++++++++++------- 3 files changed, 53 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e2e3c7f0/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeAddressHashResolver.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeAddressHashResolver.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeAddressHashResolver.java index 7ce49ec..723693e 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeAddressHashResolver.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeAddressHashResolver.java @@ -23,6 +23,7 @@ import org.apache.ignite.internal.util.typedef.internal.*; /** * Node hash resolver which uses {@link org.apache.ignite.cluster.ClusterNode#consistentId()} as alternate hash value. */ +@Deprecated public class AffinityNodeAddressHashResolver implements AffinityNodeHashResolver { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e2e3c7f0/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeIdHashResolver.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeIdHashResolver.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeIdHashResolver.java index 65c6f13..5729b67 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeIdHashResolver.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityNodeIdHashResolver.java @@ -24,6 +24,7 @@ import org.apache.ignite.internal.util.typedef.internal.*; * Node hash resolver which uses generated node ID as node hash value. As new node ID is generated * on each node start, this resolver do not provide ability to map keys to the same nodes after restart. */ +@Deprecated public class AffinityNodeIdHashResolver implements AffinityNodeHashResolver { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e2e3c7f0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 485e060..3ff682e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -141,11 +141,13 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** + * @param internalCache Internal cache flag. * @param cfg Initializes cache configuration with proper defaults. * @param cacheObjCtx Cache object context. * @throws IgniteCheckedException If configuration is not valid. */ - private void initialize(CacheConfiguration cfg, CacheObjectContext cacheObjCtx) throws IgniteCheckedException { + private void initialize(boolean internalCache, CacheConfiguration cfg, CacheObjectContext cacheObjCtx) + throws IgniteCheckedException { if (cfg.getCacheMode() == null) cfg.setCacheMode(DFLT_CACHE_MODE); @@ -159,11 +161,17 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (cfg.getCacheMode() == PARTITIONED) { RendezvousAffinityFunction aff = new RendezvousAffinityFunction(); + if (internalCache) + aff.setHashIdResolver(new AffinityNodeAddressHashResolver()); + cfg.setAffinity(aff); } else if (cfg.getCacheMode() == REPLICATED) { RendezvousAffinityFunction aff = new RendezvousAffinityFunction(false, 512); + if (internalCache) + aff.setHashIdResolver(new AffinityNodeAddressHashResolver()); + cfg.setAffinity(aff); cfg.setBackups(Integer.MAX_VALUE); @@ -171,6 +179,16 @@ public class GridCacheProcessor extends GridProcessorAdapter { else cfg.setAffinity(new LocalAffinityFunction()); } + else { + if (cfg.getCacheMode() == PARTITIONED) { + if (cfg.getAffinity() instanceof RendezvousAffinityFunction) { + RendezvousAffinityFunction aff = (RendezvousAffinityFunction)cfg.getAffinity(); + + if (internalCache && aff.getHashIdResolver() == null) + aff.setHashIdResolver(new AffinityNodeAddressHashResolver()); + } + } + } if (cfg.getCacheMode() == REPLICATED) cfg.setBackups(Integer.MAX_VALUE); @@ -534,27 +552,12 @@ public class GridCacheProcessor extends GridProcessorAdapter { ctx.discovery().setCustomEventListener(DynamicCacheChangeBatch.class, new CustomEventListener<DynamicCacheChangeBatch>() { - @Override public void onCustomEvent(ClusterNode snd, DynamicCacheChangeBatch msg) { - onCacheChangeRequested(msg); - } - }); - - // Internal caches which should not be returned to user. - Set<String> internalCaches = new HashSet<>(); - - FileSystemConfiguration[] igfsCfgs = ctx.grid().configuration().getFileSystemConfiguration(); - - if (igfsCfgs != null) { - for (FileSystemConfiguration igfsCfg : igfsCfgs) { - internalCaches.add(maskNull(igfsCfg.getMetaCacheName())); - internalCaches.add(maskNull(igfsCfg.getDataCacheName())); - } - } - - if (IgniteComponentType.HADOOP.inClassPath()) - internalCaches.add(CU.SYS_CACHE_HADOOP_MR); + @Override public void onCustomEvent(ClusterNode snd, DynamicCacheChangeBatch msg) { + onCacheChangeRequested(msg); + } + }); - internalCaches.add(CU.ATOMICS_CACHE_NAME); + Set<String> internalCaches = internalCachesNames(); CacheConfiguration[] cfgs = ctx.config().getCacheConfiguration(); @@ -572,7 +575,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { CacheObjectContext cacheObjCtx = ctx.cacheObjects().contextForCache(cfg); // Initialize defaults. - initialize(cfg, cacheObjCtx); + initialize(internalCaches.contains(maskNull(cfg.getName())), cfg, cacheObjCtx); cfgs[i] = cfg; // Replace original configuration value. @@ -654,6 +657,30 @@ public class GridCacheProcessor extends GridProcessorAdapter { log.debug("Started cache processor."); } + /** + * @return Internal caches names. + */ + private Set<String> internalCachesNames() { + // Internal caches which should not be returned to user. + Set<String> internalCaches = new HashSet<>(); + + FileSystemConfiguration[] igfsCfgs = ctx.grid().configuration().getFileSystemConfiguration(); + + if (igfsCfgs != null) { + for (FileSystemConfiguration igfsCfg : igfsCfgs) { + internalCaches.add(maskNull(igfsCfg.getMetaCacheName())); + internalCaches.add(maskNull(igfsCfg.getDataCacheName())); + } + } + + if (IgniteComponentType.HADOOP.inClassPath()) + internalCaches.add(CU.SYS_CACHE_HADOOP_MR); + + internalCaches.add(CU.ATOMICS_CACHE_NAME); + + return internalCaches; + } + /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public void onKernalStart() throws IgniteCheckedException { @@ -663,7 +690,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (CU.isMarshallerCache(ccfg.getName())) { CacheObjectContext cacheObjCtx = ctx.cacheObjects().contextForCache(ccfg); - initialize(ccfg, cacheObjCtx); + initialize(internalCachesNames().contains(maskNull(ccfg.getName())), ccfg, cacheObjCtx); GridCacheContext ctx = createCache(ccfg, null, CacheType.MARSHALLER, cacheObjCtx, true); @@ -1955,7 +1982,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { CacheObjectContext cacheObjCtx = ctx.cacheObjects().contextForCache(cfg); - initialize(cfg, cacheObjCtx); + initialize(false, cfg, cacheObjCtx); req.startCacheConfiguration(cfg); }