ignite-gg-12302 fix IgniteCacheGroupsTest cache group conflicts.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/55d44432
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/55d44432
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/55d44432

Branch: refs/heads/ignite-5267-1
Commit: 55d4443243951d220ca0bb72c8ec45eddaf0b892
Parents: b48f4de
Author: Dmitriy Govorukhin <[email protected]>
Authored: Thu Jun 15 16:30:35 2017 +0300
Committer: Dmitriy Govorukhin <[email protected]>
Committed: Thu Jun 15 16:30:35 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/ClusterCachesInfo.java     | 41 +++++++++++++-------
 .../processors/cache/GridCacheProcessor.java    |  3 ++
 2 files changed, 31 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/55d44432/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 0e508a2..e5d9fa7 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
@@ -94,6 +94,9 @@ class ClusterCachesInfo {
     /** */
     private Map<UUID, CacheClientReconnectDiscoveryData> clientReconnectReqs;
 
+    /** */
+    private volatile Exception onJoinCacheException;
+
     /**
      * @param ctx Context.
      */
@@ -112,6 +115,14 @@ class ClusterCachesInfo {
     }
 
     /**
+     *
+     * @return Exception if cache has conflict.
+     */
+    Exception onJoinCacheException(){
+        return onJoinCacheException;
+    }
+
+    /**
      * @param cacheName Cache name.
      * @param grpName Group name.
      * @return Group ID.
@@ -698,24 +709,28 @@ class ClusterCachesInfo {
     }
 
     public void addJoinInfo() {
-        Map<String, CacheConfiguration> grpCfgs = new HashMap<>();
+        try {
+            Map<String, CacheConfiguration> grpCfgs = new HashMap<>();
 
-        for (CacheJoinNodeDiscoveryData.CacheInfo info : 
joinDiscoData.caches().values()) {
-            if (info.cacheData().config().getGroupName() == null)
-                continue;
+            for (CacheJoinNodeDiscoveryData.CacheInfo info : 
joinDiscoData.caches().values()) {
+                if (info.cacheData().config().getGroupName() == null)
+                    continue;
 
-            CacheConfiguration ccfg = 
grpCfgs.get(info.cacheData().config().getGroupName());
+                CacheConfiguration ccfg = 
grpCfgs.get(info.cacheData().config().getGroupName());
 
-            if (ccfg == null)
-                grpCfgs.put(info.cacheData().config().getGroupName(), 
info.cacheData().config());
-            /*else
-                validateCacheGroupConfiguration(ccfg, 
info.cacheData().config());*/
-        }
+                if (ccfg == null)
+                    grpCfgs.put(info.cacheData().config().getGroupName(), 
info.cacheData().config());
+                else
+                    validateCacheGroupConfiguration(ccfg, 
info.cacheData().config());
+            }
 
-        String conflictErr = processJoiningNode(joinDiscoData, 
ctx.localNodeId(), true);
+            String conflictErr = processJoiningNode(joinDiscoData, 
ctx.localNodeId(), true);
 
-       /* if (conflictErr != null)
-            throw new IgniteCheckedException("Failed to start configured 
cache. " + conflictErr);*/
+            if (conflictErr != null)
+                onJoinCacheException = new IgniteCheckedException("Failed to 
start configured cache. " + conflictErr);
+        }catch (IgniteCheckedException e){
+            onJoinCacheException = e;
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/55d44432/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 82d4e78..c19664d 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
@@ -826,6 +826,9 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
             if (checkConsistency)
                 checkConsistency();
 
+            if (active && cachesInfo.onJoinCacheException() != null)
+                throw new 
IgniteCheckedException(cachesInfo.onJoinCacheException());
+
             cachesInfo.onKernalStart(checkConsistency);
 
             if (active && !ctx.clientNode() && !ctx.isDaemon())

Reply via email to