You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/21 11:47:52 UTC

ignite git commit: ignite-2.0 - Properly handle DhtInvalidPartitionException in GridDhtGetFuture

Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 d5a2ca218 -> 04e0822e6


ignite-2.0 - Properly handle DhtInvalidPartitionException in GridDhtGetFuture


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

Branch: refs/heads/ignite-2.0
Commit: 04e0822e686734626ede2d8cf1dd33e851ad9838
Parents: d5a2ca2
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Fri Apr 21 14:48:00 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Fri Apr 21 14:48:25 2017 +0300

----------------------------------------------------------------------
 .../cache/distributed/dht/GridDhtGetFuture.java | 37 ++++++++++++--------
 1 file changed, 23 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/04e0822e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
index 5fe0ef4..7bc17a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -291,27 +291,36 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
      * @return {@code True} if mapped.
      */
     private boolean map(KeyCacheObject key) {
-        GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
-            cache().topology().localPartition(cctx.affinity().partition(key), topVer, true) :
-            cache().topology().localPartition(key, false);
+        try {
+            GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
+                cache().topology().localPartition(cctx.affinity().partition(key), topVer, true) :
+                cache().topology().localPartition(key, false);
 
-        if (part == null)
-            return false;
+            if (part == null)
+                return false;
 
-        if (parts == null || !F.contains(parts, part.id())) {
-            // By reserving, we make sure that partition won't be unloaded while processed.
-            if (part.reserve()) {
-                parts = parts == null ? new int[1] : Arrays.copyOf(parts, parts.length + 1);
+            if (parts == null || !F.contains(parts, part.id())) {
+                // By reserving, we make sure that partition won't be unloaded while processed.
+                if (part.reserve()) {
+                    parts = parts == null ? new int[1] : Arrays.copyOf(parts, parts.length + 1);
 
-                parts[parts.length - 1] = part.id();
+                    parts[parts.length - 1] = part.id();
 
-                return true;
+                    return true;
+                }
+                else
+                    return false;
             }
             else
-                return false;
+                return true;
+        }
+        catch (GridDhtInvalidPartitionException e) {
+            if (log.isDebugEnabled())
+                log.debug("Attempted to create a partition which does not belong to local node, will remap " +
+                    "[key=" + key + ", part=" + e.partition() + ']');
+
+            return false;
         }
-        else
-            return true;
     }
 
     /**