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 2017/05/22 15:13:14 UTC

[46/50] [abbrv] ignite git commit: Merge remote-tracking branch 'remotes/community/ignite-5075' into ignite-5075-pds

http://git-wip-us.apache.org/repos/asf/ignite/blob/08404350/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
index 957f93b,e373f4c..5e84b3e
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
@@@ -276,8 -178,8 +190,8 @@@ public class GridDhtPreloader extends G
          assert exchFut.forcePreload() || exchFut.dummyReassign() ||
              exchFut.exchangeId().topologyVersion().equals(top.topologyVersion()) :
              "Topology version mismatch [exchId=" + exchFut.exchangeId() +
-                 ", cache=" + cctx.name() +
 -            ", grp=" + grp.name() +
 -            ", topVer=" + top.topologyVersion() + ']';
++                ", grp=" + grp.name() +
 +                ", topVer=" + top.topologyVersion() + ']';
  
          GridDhtPreloaderAssignments assigns = new GridDhtPreloaderAssignments(exchFut, top.topologyVersion());
  
@@@ -295,96 -199,50 +211,96 @@@
              }
  
              // If partition belongs to local node.
-             if (cctx.affinity().partitionLocalNode(p, topVer)) {
+             if (aff.get(p).contains(ctx.localNode())) {
 -                GridDhtLocalPartition part = top.localPartition(p, topVer, true);
 +                GridDhtLocalPartition part = top.localPartition(p, topVer, true, true);
  
                  assert part != null;
                  assert part.id() == p;
  
 -                if (part.state() != MOVING) {
 -                    if (log.isDebugEnabled())
 -                        log.debug("Skipping partition assignment (state is not MOVING): " + part);
 +                ClusterNode histSupplier = null;
 +
 +                if (cctx.shared().database().persistenceEnabled()) {
 +                    UUID nodeId = exchFut.partitionHistorySupplier(cctx.cacheId(), p);
  
 -                    continue; // For.
 +                    if (nodeId != null)
 +                        histSupplier = cctx.discovery().node(nodeId);
                  }
  
 -                Collection<ClusterNode> picked = pickedOwners(p, topVer);
 +                if (histSupplier != null) {
 +                    if (part.state() != MOVING) {
 +                        if (log.isDebugEnabled())
 +                            log.debug("Skipping partition assignment (state is not MOVING): " + part);
 +
 +                        continue; // For.
 +                    }
  
 -                if (picked.isEmpty()) {
 -                    top.own(part);
 +                    assert cctx.shared().database().persistenceEnabled();
 +                    assert remoteOwners(p, topVer).contains(histSupplier) : remoteOwners(p, topVer);
  
 -                    if (grp.eventRecordable(EVT_CACHE_REBALANCE_PART_DATA_LOST)) {
 -                        DiscoveryEvent discoEvt = exchFut.discoveryEvent();
 +                    GridDhtPartitionDemandMessage msg = assigns.get(histSupplier);
  
 -                        grp.addRebalanceEvent(p,
 -                            EVT_CACHE_REBALANCE_PART_DATA_LOST,
 -                            discoEvt.eventNode(),
 -                            discoEvt.type(),
 -                            discoEvt.timestamp());
 +                    if (msg == null) {
 +                        assigns.put(histSupplier, msg = new GridDhtPartitionDemandMessage(
 +                            top.updateSequence(),
 +                            exchFut.exchangeId().topologyVersion(),
 +                            cctx.cacheId()));
                      }
  
 -                    if (log.isDebugEnabled())
 -                        log.debug("Owning partition as there are no other owners: " + part);
 +                    msg.addPartition(p, true);
                  }
                  else {
 -                    ClusterNode n = F.rand(picked);
 +                    if (cctx.shared().database().persistenceEnabled()) {
 +                        if (part.state() == RENTING || part.state() == EVICTED) {
 +                            try {
 +                                part.rent(false).get();
 +                            }
 +                            catch (IgniteCheckedException e) {
 +                                U.error(log, "Error while clearing outdated local partition", e);
 +                            }
 +
 +                            part = top.localPartition(p, topVer, true);
 +
 +                            assert part != null;
 +                        }
 +                    }
  
 -                    GridDhtPartitionDemandMessage msg = assigns.get(n);
 +                    if (part.state() != MOVING) {
 +                        if (log.isDebugEnabled())
 +                            log.debug("Skipping partition assignment (state is not MOVING): " + part);
 +
 +                        continue; // For.
 +                    }
 +
 +                    Collection<ClusterNode> picked = pickedOwners(p, topVer);
 +
 +                    if (picked.isEmpty()) {
 +                        top.own(part);
 +
-                         if (cctx.events().isRecordable(EVT_CACHE_REBALANCE_PART_DATA_LOST)) {
++                        if (grp.eventRecordable(EVT_CACHE_REBALANCE_PART_DATA_LOST)) {
 +                            DiscoveryEvent discoEvt = exchFut.discoveryEvent();
 +
-                             cctx.events().addPreloadEvent(p,
-                                 EVT_CACHE_REBALANCE_PART_DATA_LOST, discoEvt.eventNode(),
-                                 discoEvt.type(), discoEvt.timestamp());
-                         }
++                        grp.addRebalanceEvent(p,
++                            EVT_CACHE_REBALANCE_PART_DATA_LOST, discoEvt.eventNode(),
++                            discoEvt.type(), discoEvt.timestamp());
++                    }
 +
 +                        if (log.isDebugEnabled())
 +                            log.debug("Owning partition as there are no other owners: " + part);
 +                    }
 +                    else {
 +                        ClusterNode n = F.rand(picked);
 +
 +                        GridDhtPartitionDemandMessage msg = assigns.get(n);
  
-                         if (msg == null) {
-                             assigns.put(n, msg = new GridDhtPartitionDemandMessage(
-                                 top.updateSequence(),
-                                 exchFut.exchangeId().topologyVersion(),
-                                 cctx.cacheId()));
-                         }
+                     if (msg == null) {
+                         assigns.put(n, msg = new GridDhtPartitionDemandMessage(
+                             top.updateSequence(),
+                             exchFut.exchangeId().topologyVersion(),
+                             grp.groupId()));
+                     }
  
 -                    msg.addPartition(p);
 +                        msg.addPartition(p, false);
 +                    }
                  }
              }
          }

http://git-wip-us.apache.org/repos/asf/ignite/blob/08404350/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/08404350/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/08404350/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/08404350/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index 4bd2372,306e298..625fb7d
mode 100755,100644..100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java