Repository: ignite Updated Branches: refs/heads/ignite-5075 4ef76013b -> 2919f5a4e
ignite-5075 Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2919f5a4 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2919f5a4 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2919f5a4 Branch: refs/heads/ignite-5075 Commit: 2919f5a4ed8febeaa6c470b092d4b09f90e2d832 Parents: 4ef7601 Author: sboikov <[email protected]> Authored: Wed May 31 17:03:11 2017 +0300 Committer: sboikov <[email protected]> Committed: Wed May 31 17:04:34 2017 +0300 ---------------------------------------------------------------------- .../processors/cache/ClusterCachesInfo.java | 20 +++++++++- .../processors/cache/IgniteCacheGroupsTest.java | 40 ++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/2919f5a4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java index cd79673..b238be4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java @@ -98,10 +98,25 @@ class ClusterCachesInfo { /** * @param joinDiscoData Information about configured caches and templates. + * @throws IgniteCheckedException If configuration validation failed. */ - void onStart(CacheJoinNodeDiscoveryData joinDiscoData) { + void onStart(CacheJoinNodeDiscoveryData joinDiscoData) throws IgniteCheckedException { this.joinDiscoData = joinDiscoData; + Map<String, CacheConfiguration> grpCfgs = new HashMap<>(); + + for (CacheJoinNodeDiscoveryData.CacheInfo info : joinDiscoData.caches().values()) { + if (info.config().getGroupName() == null) + continue; + + CacheConfiguration ccfg = grpCfgs.get(info.config().getGroupName()); + + if (ccfg == null) + grpCfgs.put(info.config().getGroupName(), info.config()); + else + validateCacheGroupConfiguration(ccfg, info.config()); + } + processJoiningNode(joinDiscoData, ctx.localNodeId()); } @@ -1098,6 +1113,9 @@ class ClusterCachesInfo { CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, "affinity", "Affinity function", attr1.cacheAffinityClassName(), attr2.cacheAffinityClassName(), true); + CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, "affinityPartitionsCount", + "Affinity partitions count", attr1.affinityPartitionsCount(), attr2.affinityPartitionsCount(), true); + CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, "nodeFilter", "Node filter", attr1.nodeFilterClassName(), attr2.nodeFilterClassName(), true); http://git-wip-us.apache.org/repos/asf/ignite/blob/2919f5a4/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java index 7b70472..a56670f 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java @@ -2450,6 +2450,46 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ + public void testStaticConfigurationsValidation() throws Exception { + ccfgs = new CacheConfiguration[2]; + + ccfgs[0] = new CacheConfiguration(CACHE1); + ccfgs[0].setGroupName(GROUP1); + ccfgs[0].setAffinity(new RendezvousAffinityFunction(false, 1024)); + + ccfgs[1] = new CacheConfiguration(CACHE2); + ccfgs[1].setGroupName(GROUP1); + ccfgs[1].setAffinity(new RendezvousAffinityFunction(false, 512)); + + try { + startGrid(0); + + fail(); + } + catch (IgniteCheckedException ignore) { + // Expected exception. + } + + ccfgs = new CacheConfiguration[3]; + + ccfgs[0] = new CacheConfiguration(CACHE1); + ccfgs[0].setGroupName(GROUP1); + ccfgs[0].setAffinity(new RendezvousAffinityFunction(false, 16)); + + ccfgs[1] = new CacheConfiguration(CACHE2); + ccfgs[1].setGroupName(GROUP2); + ccfgs[1].setAffinity(new RendezvousAffinityFunction(false, 512)); + + ccfgs[2] = new CacheConfiguration("cache3"); + ccfgs[2].setGroupName(GROUP1); + ccfgs[2].setAffinity(new RendezvousAffinityFunction(false, 16)); + + startGrid(0); + } + + /** + * @throws Exception If failed. + */ public void testConfigurationConsistencyValidation() throws Exception { startGrids(2);
