You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2018/10/07 15:17:09 UTC

ignite git commit: ignite-9803: handle GridDhtInvalidPartitionException in GridDhtPartitionDemander

Repository: ignite
Updated Branches:
  refs/heads/master 6e0ff06f8 -> 4e6727fe4


ignite-9803: handle GridDhtInvalidPartitionException in GridDhtPartitionDemander


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

Branch: refs/heads/master
Commit: 4e6727fe4c2952bb3d5be1c7767b3dd0dfe392da
Parents: 6e0ff06
Author: sboikov <sb...@apache.org>
Authored: Sun Oct 7 18:15:16 2018 +0300
Committer: sboikov <sb...@apache.org>
Committed: Sun Oct 7 18:15:16 2018 +0300

----------------------------------------------------------------------
 .../dht/preloader/GridDhtPartitionDemander.java | 20 +++++++++++++++++++-
 .../topology/GridDhtPartitionTopologyImpl.java  |  4 +++-
 .../dht/topology/PartitionsEvictManager.java    | 16 ++++++++++------
 3 files changed, 32 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4e6727fe/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
index 40defa1..d2f8b13 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
@@ -741,7 +741,25 @@ public class GridDhtPartitionDemander {
                 int p = e.getKey();
 
                 if (aff.get(p).contains(ctx.localNode())) {
-                    GridDhtLocalPartition part = top.localPartition(p, topVer, true);
+                    GridDhtLocalPartition part;
+
+                    try {
+                        part = top.localPartition(p, topVer, true);
+                    }
+                    catch (GridDhtInvalidPartitionException err) {
+                        assert !topVer.equals(top.lastTopologyChangeVersion());
+
+                        if (log.isDebugEnabled()) {
+                            log.debug("Failed to get partition for rebalancing [" +
+                                "grp=" + grp.cacheOrGroupName() +
+                                ", err=" + err +
+                                ", p=" + p +
+                                ", topVer=" + topVer +
+                                ", lastTopVer=" + top.lastTopologyChangeVersion() + ']');
+                        }
+
+                        continue;
+                    }
 
                     assert part != null;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4e6727fe/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
index 7035e37..8b5c028 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
@@ -946,8 +946,10 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology {
                     }
                 }
                 else if (loc != null && state == RENTING && !showRenting) {
+                    boolean belongsNow = topVer.equals(this.readyTopVer) ? belongs : partitionLocalNode(p, this.readyTopVer);
+
                     throw new GridDhtInvalidPartitionException(p, "Adding entry to partition that is concurrently " +
-                        "evicted [grp=" + grp.cacheOrGroupName() + ", part=" + p + ", shouldBeMoving="
+                        "evicted [grp=" + grp.cacheOrGroupName() + ", part=" + p + ", belongsNow=" + belongsNow
                         + ", belongs=" + belongs + ", topVer=" + topVer + ", curTopVer=" + this.readyTopVer + "]");
                 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4e6727fe/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/PartitionsEvictManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/PartitionsEvictManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/PartitionsEvictManager.java
index cd010fa..7f2a2a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/PartitionsEvictManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/PartitionsEvictManager.java
@@ -63,6 +63,7 @@ public class PartitionsEvictManager extends GridCacheSharedManagerAdapter {
     /** Next time of show eviction progress. */
     private long nextShowProgressTime;
 
+    /** */
     private final Map<Integer, GroupEvictionContext> evictionGroupsMap = new ConcurrentHashMap<>();
 
     /** Flag indicates that eviction process has stopped. */
@@ -177,7 +178,7 @@ public class PartitionsEvictManager extends GridCacheSharedManagerAdapter {
                     // Print current eviction progress.
                     showProgress();
 
-                    GroupEvictionContext groupEvictionContext = evictionTask.groupEvictionContext;
+                    GroupEvictionContext groupEvictionContext = evictionTask.groupEvictionCtx;
 
                     // Check that group or node stopping.
                     if (groupEvictionContext.shouldStop())
@@ -390,37 +391,39 @@ public class PartitionsEvictManager extends GridCacheSharedManagerAdapter {
         /** Partition to evict. */
         private final GridDhtLocalPartition part;
 
+        /** */
         private final long size;
 
         /** Eviction context. */
-        private final GroupEvictionContext groupEvictionContext;
+        private final GroupEvictionContext groupEvictionCtx;
 
         /** */
         private final GridFutureAdapter<?> finishFut = new GridFutureAdapter<>();
 
         /**
          * @param part Partition.
+         * @param groupEvictionCtx Eviction context.
          */
         private PartitionEvictionTask(
             GridDhtLocalPartition part,
-            GroupEvictionContext groupEvictionContext
+            GroupEvictionContext groupEvictionCtx
         ) {
             this.part = part;
-            this.groupEvictionContext = groupEvictionContext;
+            this.groupEvictionCtx = groupEvictionCtx;
 
             size = part.fullSize();
         }
 
         /** {@inheritDoc} */
         @Override public void run() {
-            if (groupEvictionContext.shouldStop()) {
+            if (groupEvictionCtx.shouldStop()) {
                 finishFut.onDone();
 
                 return;
             }
 
             try {
-                boolean success = part.tryClear(groupEvictionContext);
+                boolean success = part.tryClear(groupEvictionCtx);
 
                 if (success) {
                     if (part.state() == GridDhtPartitionState.EVICTED && part.markForDestroy())
@@ -502,6 +505,7 @@ public class PartitionsEvictManager extends GridCacheSharedManagerAdapter {
         /**
          * Offer task to queue.
          *
+         * @param task Eviction task.
          * @return Bucket index.
          */
         int offer(PartitionEvictionTask task) {