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);
 

Reply via email to