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