# ignite-929 review
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d58f5cd4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d58f5cd4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d58f5cd4 Branch: refs/heads/ignite-929 Commit: d58f5cd4de957a37af8ef2b7c6ceacc648f72090 Parents: 39183ee Author: sboikov <sboi...@gridgain.com> Authored: Wed May 27 17:27:40 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Wed May 27 17:27:40 2015 +0300 ---------------------------------------------------------------------- .../managers/discovery/GridDiscoveryManager.java | 12 ++++++++++-- .../internal/processors/cache/GridCacheProcessor.java | 7 ++----- .../cache/distributed/dht/GridDhtCacheEntry.java | 5 +++-- .../processors/cache/CacheStopAndDestroySelfTest.java | 6 +++++- 4 files changed, 20 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d58f5cd4/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index 9737002..c7bbf6f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -255,7 +255,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { * @param cacheName Cache name. * @param clientNodeId Near node ID. */ - public void onNodeLeft(String cacheName, UUID clientNodeId) { + public void onClientCacheClose(String cacheName, UUID clientNodeId) { CachePredicate predicate = registeredCaches.get(cacheName); if (predicate != null) @@ -999,9 +999,17 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { * @return {@code True} if node for given ID is alive. */ public boolean alive(UUID nodeId) { + return getAlive(nodeId) != null; + } + + /** + * @param nodeId Node ID. + * @return Node if node is alive. + */ + @Nullable public ClusterNode getAlive(UUID nodeId) { assert nodeId != null; - return getSpi().getNode(nodeId) != null; // Go directly to SPI without checking disco cache. + return getSpi().getNode(nodeId); // Go directly to SPI without checking disco cache. } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d58f5cd4/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 ccbf10a..3c5d2dc 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 @@ -2129,7 +2129,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { req.nearCacheConfiguration() != null); } else if (req.close()) { - if (req.initiatingNodeId().equals(ctx.localNodeId())) { stopGateway(req); @@ -2139,14 +2138,12 @@ public class GridCacheProcessor extends GridProcessorAdapter { registeredCaches.remove(maskNull(req.cacheName()), desc); } - ctx.discovery().onNodeLeft(req.cacheName(), req.initiatingNodeId()); + ctx.discovery().onClientCacheClose(req.cacheName(), req.initiatingNodeId()); DynamicCacheStartFuture changeFut = (DynamicCacheStartFuture)pendingFuts.get(maskNull(req.cacheName())); - if (changeFut != null && changeFut.deploymentId().equals(req.deploymentId())) { - // No-op. + if (changeFut != null && changeFut.deploymentId().equals(req.deploymentId())) changeFut.onDone(); - } } else { if (desc == null) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d58f5cd4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java index 1ecc63c..9318438 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java @@ -601,8 +601,9 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry { List<ReaderId> newRdrs = null; for (int i = 0; i < rdrs.length; i++) { - if (!cctx.discovery().alive(rdrs[i].nodeId()) || - !cctx.discovery().cacheNode(cctx.discovery().node(rdrs[i].nodeId), cacheName())) { + ClusterNode node = cctx.discovery().getAlive(rdrs[i].nodeId()); + + if (node == null || !cctx.discovery().cacheNode(node, cacheName())) { // Node has left and if new list has already been created, just skip. // Otherwise, create new list and add alive nodes. if (newRdrs == null) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d58f5cd4/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java index 31e5d92..48769da 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java @@ -325,7 +325,11 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest { assert grid(0).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated"); assert grid(1).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated"); - assert grid(2).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated"); + assert grid(2).cache(CACHE_NAME_CLOSE_NEAR).localPeek(KEY_VAL).equals(KEY_VAL + "recreated"); + + grid(0).cache(CACHE_NAME_CLOSE_NEAR).put(KEY_VAL, KEY_VAL + "recreated2"); + + assert grid(2).cache(CACHE_NAME_CLOSE_NEAR).localPeek(KEY_VAL).equals(KEY_VAL + "recreated2"); //Local close. Same as Local destroy.