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/03/30 11:50:18 UTC

[49/50] [abbrv] ignite git commit: Merge branch master into ignite-3477-master

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java
index 38252ef,7a98366..bf2ab29
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java
@@@ -47,9 -43,8 +47,9 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.cache.GridCacheMapEntryFactory;
  import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId;
  import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap;
- import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap2;
+ import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap;
  import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
 +import org.apache.ignite.internal.util.F0;
  import org.apache.ignite.internal.util.GridAtomicLong;
  import org.apache.ignite.internal.util.StripedCompositeReadWriteLock;
  import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@@ -1088,11 -1002,9 +1088,11 @@@ class GridDhtPartitionTopologyImpl impl
  
      /** {@inheritDoc} */
      @SuppressWarnings({"MismatchedQueryAndUpdateOfCollection"})
-     @Override public GridDhtPartitionMap2 update(
 -    @Override public boolean update(@Nullable GridDhtPartitionExchangeId exchId,
++    @Override public GridDhtPartitionMap update(
 +        @Nullable GridDhtPartitionExchangeId exchId,
          GridDhtPartitionFullMap partMap,
 -        @Nullable Map<Integer, Long> cntrMap) {
 +        @Nullable Map<Integer, T2<Long, Long>> cntrMap
 +    ) {
          if (log.isDebugEnabled())
              log.debug("Updating full partition map [exchId=" + exchId + ", parts=" + fullMapString() + ']');
  
@@@ -1185,9 -1093,9 +1185,9 @@@
  
              node2part = partMap;
  
 -            Map<Integer, Set<UUID>> p2n = U.newHashMap(cctx.affinity().partitions());
 +            Map<Integer, Set<UUID>> p2n = new HashMap<>(cctx.affinity().partitions(), 1.0f);
  
-             for (Map.Entry<UUID, GridDhtPartitionMap2> e : partMap.entrySet()) {
+             for (Map.Entry<UUID, GridDhtPartitionMap> e : partMap.entrySet()) {
                  for (Integer p : e.getValue().keySet()) {
                      Set<UUID> ids = p2n.get(p);
  
@@@ -1206,34 -1114,6 +1206,34 @@@
  
              AffinityTopologyVersion affVer = cctx.affinity().affinityTopologyVersion();
  
-             GridDhtPartitionMap2 nodeMap = partMap.get(cctx.localNodeId());
++            GridDhtPartitionMap nodeMap = partMap.get(cctx.localNodeId());
 +
 +            if (nodeMap != null && cctx.shared().database().persistenceEnabled()) {
 +                for (Map.Entry<Integer, GridDhtPartitionState> e : nodeMap.entrySet()) {
 +                    int p = e.getKey();
 +                    GridDhtPartitionState state = e.getValue();
 +
 +                   if (state == MOVING) {
 +                        GridDhtLocalPartition locPart = locParts.get(p);
 +
 +                        assert locPart != null;
 +
 +                        if (locPart.state() == OWNING) {
 +                            locPart.moving();
 +
 +                            changed = true;
 +                        }
 +
 +                        if (cntrMap != null) {
 +                            T2<Long, Long> cntr = cntrMap.get(p);
 +
 +                            if (cntr != null && cntr.get2() > locPart.updateCounter())
 +                                locPart.updateCounter(cntr.get2());
 +                        }
 +                    }
 +                }
 +            }
 +
              if (!affVer.equals(AffinityTopologyVersion.NONE) && affVer.compareTo(topVer) >= 0) {
                  List<List<ClusterNode>> aff = cctx.affinity().assignments(topVer);
  
@@@ -1258,12 -1135,10 +1258,12 @@@
      }
  
      /** {@inheritDoc} */
 -    @Override public boolean update(@Nullable GridDhtPartitionExchangeId exchId,
 +    @SuppressWarnings({"MismatchedQueryAndUpdateOfCollection"})
-     @Nullable @Override public GridDhtPartitionMap2 update(
++    @Nullable @Override public GridDhtPartitionMap update(
 +        @Nullable GridDhtPartitionExchangeId exchId,
-         GridDhtPartitionMap2 parts,
+         GridDhtPartitionMap parts,
 -        @Nullable Map<Integer, Long> cntrMap,
 -        boolean checkEvictions) {
 +        @Nullable Map<Integer, T2<Long, Long>> cntrMap
 +    ) {
          if (log.isDebugEnabled())
              log.debug("Updating single partition map [exchId=" + exchId + ", parts=" + mapString(parts) + ']');
  
@@@ -1377,96 -1242,6 +1377,96 @@@
              if (log.isDebugEnabled())
                  log.debug("Partition map after single update: " + fullMapString());
  
 +            if (changed)
 +                cctx.shared().exchange().scheduleResendPartitions();
 +
 +            return changed ? localPartitionMap() : null;
 +        }
 +        finally {
 +            lock.writeLock().unlock();
 +        }
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public boolean detectLostPartitions(DiscoveryEvent discoEvt) {
 +        lock.writeLock().lock();
 +
 +        try {
 +            int parts = cctx.affinity().partitions();
 +
 +            Collection<Integer> lost = null;
 +
 +            for (int p = 0; p < parts; p++) {
 +                boolean foundOwner = false;
 +
 +                Set<UUID> nodeIds = part2node.get(p);
 +
 +                if (nodeIds != null) {
 +                    for (UUID nodeId : nodeIds) {
-                         GridDhtPartitionMap2 partMap = node2part.get(nodeId);
++                        GridDhtPartitionMap partMap = node2part.get(nodeId);
 +
 +                        GridDhtPartitionState state = partMap.get(p);
 +
 +                        if (state == OWNING) {
 +                            foundOwner = true;
 +
 +                            break;
 +                        }
 +                    }
 +                }
 +
 +                if (!foundOwner) {
 +                    if (lost == null)
 +                        lost = new HashSet<>(parts - p, 1.0f);
 +
 +                    lost.add(p);
 +                }
 +            }
 +
 +            boolean changed = false;
 +
 +            if (lost != null) {
 +                PartitionLossPolicy plc = cctx.config().getPartitionLossPolicy();
 +
 +                assert plc != null;
 +
 +                // Update partition state on all nodes.
 +                for (Integer part : lost) {
 +                    long updSeq = updateSeq.incrementAndGet();
 +
 +                    GridDhtLocalPartition locPart = localPartition(part, topVer, false);
 +
 +                    if (locPart != null) {
 +                        boolean marked = plc == PartitionLossPolicy.IGNORE ? locPart.own() : locPart.markLost();
 +
 +                        if (marked)
 +                            updateLocal(locPart.id(), locPart.state(), updSeq);
 +
 +                        changed |= marked;
 +                    }
 +                    // Update map for remote node.
 +                    else if (plc != PartitionLossPolicy.IGNORE) {
 +                        Set<UUID> nodeIds = part2node.get(part);
 +
 +                        if (nodeIds != null) {
 +                            for (UUID nodeId : nodeIds) {
-                                 GridDhtPartitionMap2 nodeMap = node2part.get(nodeId);
++                                GridDhtPartitionMap nodeMap = node2part.get(nodeId);
 +
 +                                if (nodeMap.get(part) != EVICTED)
 +                                    nodeMap.put(part, LOST);
 +                            }
 +                        }
 +                    }
 +
 +                    if (cctx.events().isRecordable(EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST))
 +                        cctx.events().addPreloadEvent(part, EVT_CACHE_REBALANCE_PART_DATA_LOST,
 +                            discoEvt.eventNode(), discoEvt.type(), discoEvt.timestamp());
 +                }
 +
 +                if (plc != PartitionLossPolicy.IGNORE)
 +                    cctx.needsRecovery(true);
 +            }
 +
              return changed;
          }
          finally {
@@@ -1474,123 -1249,6 +1474,123 @@@
          }
      }
  
 +    /** {@inheritDoc} */
 +    @Override public void resetLostPartitions() {
 +        lock.writeLock().lock();
 +
 +        try {
 +            int parts = cctx.affinity().partitions();
 +            long updSeq = updateSeq.incrementAndGet();
 +
 +            for (int part = 0; part < parts; part++) {
 +                Set<UUID> nodeIds = part2node.get(part);
 +
 +                if (nodeIds != null) {
 +                    boolean lost = false;
 +
 +                    for (UUID node : nodeIds) {
-                         GridDhtPartitionMap2 map = node2part.get(node);
++                        GridDhtPartitionMap map = node2part.get(node);
 +
 +                        if (map.get(part) == LOST) {
 +                            lost = true;
 +
 +                            break;
 +                        }
 +                    }
 +
 +                    if (lost) {
 +                        GridDhtLocalPartition locPart = localPartition(part, topVer, false);
 +
 +                        if (locPart != null) {
 +                            boolean marked = locPart.own();
 +
 +                            if (marked)
 +                                updateLocal(locPart.id(), locPart.state(), updSeq);
 +                        }
 +
 +                        for (UUID nodeId : nodeIds) {
-                             GridDhtPartitionMap2 nodeMap = node2part.get(nodeId);
++                            GridDhtPartitionMap nodeMap = node2part.get(nodeId);
 +
 +                            if (nodeMap.get(part) == LOST)
 +                                nodeMap.put(part, OWNING);
 +                        }
 +                    }
 +                }
 +            }
 +
 +            checkEvictions(updSeq, cctx.affinity().assignments(topVer));
 +
 +            cctx.needsRecovery(false);
 +        }
 +        finally {
 +            lock.writeLock().unlock();
 +        }
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public Collection<Integer> lostPartitions() {
 +        lock.readLock().lock();
 +
 +        try {
 +            Collection<Integer> res = null;
 +
 +            int parts = cctx.affinity().partitions();
 +
 +            for (int part = 0; part < parts; part++) {
 +                Set<UUID> nodeIds = part2node.get(part);
 +
 +                if (nodeIds != null) {
 +                    for (UUID node : nodeIds) {
-                         GridDhtPartitionMap2 map = node2part.get(node);
++                        GridDhtPartitionMap map = node2part.get(node);
 +
 +                        if (map.get(part) == LOST) {
 +                            if (res == null)
 +                                res = new ArrayList<>(parts - part);
 +
 +                            res.add(part);
 +
 +                            break;
 +                        }
 +                    }
 +                }
 +            }
 +
 +            return res == null ? Collections.<Integer>emptyList() : res;
 +        }
 +        finally {
 +            lock.readLock().unlock();
 +        }
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public void setOwners(int p, Set<UUID> owners, boolean updateSeq) {
 +        lock.writeLock().lock();
 +
 +        try {
 +
 +            GridDhtLocalPartition locPart = locParts.get(p);
 +
 +            if (locPart != null) {
 +                if (locPart.state() == OWNING && !owners.contains(cctx.localNodeId()))
 +                    locPart.moving();
 +            }
 +
-             for (Map.Entry<UUID, GridDhtPartitionMap2> e : node2part.entrySet()) {
++            for (Map.Entry<UUID, GridDhtPartitionMap> e : node2part.entrySet()) {
 +                if (!e.getValue().containsKey(p))
 +                    continue;
 +
 +                if (e.getValue().get(p) == OWNING && !owners.contains(e.getKey()))
 +                    e.getValue().put(p, MOVING);
 +            }
 +
 +            if (updateSeq)
 +                node2part = new GridDhtPartitionFullMap(node2part, this.updateSeq.incrementAndGet());
 +        }
 +        finally {
 +            lock.writeLock().unlock();
 +        }
 +    }
 +
      /**
       * @param updateSeq Update sequence.
       * @return {@code True} if state changed.
@@@ -1743,32 -1398,30 +1743,32 @@@
              }
          }
  
 -        UUID locNodeId = cctx.localNodeId();
 +        if (node2part != null) {
 +            UUID locNodeId = cctx.localNodeId();
  
-             GridDhtPartitionMap2 map = node2part.get(locNodeId);
+         GridDhtPartitionMap map = node2part.get(locNodeId);
  
 -        if (map == null) {
 -            map = new GridDhtPartitionMap(locNodeId,
 -                updateSeq,
 -                topVer,
 -                Collections.<Integer, GridDhtPartitionState>emptyMap(),
 -                false);
 +            if (map == null) {
-                 map = new GridDhtPartitionMap2(locNodeId,
++                map = new GridDhtPartitionMap(locNodeId,
 +                    updateSeq,
 +                    topVer,
 +                    Collections.<Integer, GridDhtPartitionState>emptyMap(),
 +                    false);
  
 -            node2part.put(locNodeId, map);
 -        }
 +                node2part.put(locNodeId, map);
 +            }
  
 -        map.updateSequence(updateSeq, topVer);
 +            map.updateSequence(updateSeq, topVer);
  
 -        map.put(p, state);
 +            map.put(p, state);
  
 -        Set<UUID> ids = part2node.get(p);
 +            Set<UUID> ids = part2node.get(p);
  
 -        if (ids == null)
 -            part2node.put(p, ids = U.newHashSet(3));
 +            if (ids == null)
 +                part2node.put(p, ids = U.newHashSet(3));
  
 -        ids.add(locNodeId);
 +            ids.add(locNodeId);
 +        }
  
          return updateSeq;
      }
@@@ -1858,19 -1511,7 +1858,19 @@@
      }
  
      /** {@inheritDoc} */
-     @Nullable @Override public GridDhtPartitionMap2 partitions(UUID nodeId) {
 -    @Override public Map<Integer, Long> updateCounters(boolean skipZeros) {
++    @Nullable @Override public GridDhtPartitionMap partitions(UUID nodeId) {
 +        lock.readLock().lock();
 +
 +        try {
 +            return node2part.get(nodeId);
 +        }
 +        finally {
 +            lock.readLock().unlock();
 +        }
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public Map<Integer, T2<Long, Long>> updateCounters(boolean skipZeros) {
          lock.readLock().lock();
  
          try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
index 0da3a44,47f4066..0334728
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
@@@ -286,43 -265,19 +281,20 @@@ public class GridPartitionedSingleGetFu
                  cctx.mvcc().addFuture(this, futId);
              }
  
-             GridCacheMessage req;
- 
-             if (node.version().compareTo(SINGLE_GET_MSG_SINCE) >= 0) {
-                 req = new GridNearSingleGetRequest(cctx.cacheId(),
-                     futId.localId(),
-                     key,
-                     readThrough,
-                     topVer,
-                     subjId,
-                     taskName == null ? 0 : taskName.hashCode(),
-                     expiryPlc != null ? expiryPlc.forCreate() : -1L,
-                     expiryPlc != null ? expiryPlc.forAccess() : -1L,
-                     skipVals,
-                     /**add reader*/false,
-                     needVer,
-                     cctx.deploymentEnabled(),
-                     recovery);
-             }
-             else {
-                 Map<KeyCacheObject, Boolean> map = Collections.singletonMap(key, false);
- 
-                 req = new GridNearGetRequest(
-                     cctx.cacheId(),
-                     futId,
-                     futId,
-                     cctx.versions().next(),
-                     map,
-                     readThrough,
-                     topVer,
-                     subjId,
-                     taskName == null ? 0 : taskName.hashCode(),
-                     expiryPlc != null ? expiryPlc.forCreate() : -1L,
-                     expiryPlc != null ? expiryPlc.forAccess() : -1L,
-                     skipVals,
-                     cctx.deploymentEnabled(),
-                     recovery);
-             }
+             GridCacheMessage req = new GridNearSingleGetRequest(cctx.cacheId(),
+                 futId.localId(),
+                 key,
+                 readThrough,
+                 topVer,
+                 subjId,
+                 taskName == null ? 0 : taskName.hashCode(),
+                 expiryPlc != null ? expiryPlc.forCreate() : -1L,
+                 expiryPlc != null ? expiryPlc.forAccess() : -1L,
+                 skipVals,
+                 /**add reader*/false,
+                 needVer,
 -                cctx.deploymentEnabled());
++                cctx.deploymentEnabled(),
++                recovery);
  
              try {
                  cctx.io().send(node, req, cctx.ioPolicy());

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicNearResponse.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicNearResponse.java
index 5dd2c03,74b7885..d6e2db0
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicNearResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicNearResponse.java
@@@ -165,8 -165,8 +165,8 @@@ public class GridDhtAtomicNearResponse 
      }
  
      /** {@inheritDoc} */
-     @Override public byte directType() {
+     @Override public short directType() {
 -        return -45;
 +        return -48;
      }
  
      /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicCheckUpdateRequest.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicCheckUpdateRequest.java
index c23ebec,54c9723..4b9109e
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicCheckUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicCheckUpdateRequest.java
@@@ -95,8 -95,8 +95,8 @@@ public class GridNearAtomicCheckUpdateR
      }
  
      /** {@inheritDoc} */
-     @Override public byte directType() {
+     @Override public short directType() {
 -        return -47;
 +        return -50;
      }
  
      /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFilterRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/NearCacheUpdates.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/NearCacheUpdates.java
index 94d53e7,76b8bc3..d922095
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/NearCacheUpdates.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/NearCacheUpdates.java
@@@ -314,8 -314,8 +314,8 @@@ public class NearCacheUpdates implement
      }
  
      /** {@inheritDoc} */
-     @Override public byte directType() {
+     @Override public short directType() {
 -        return -48;
 +        return -51;
      }
  
      /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
index 5822374,83ac1af..d1a132f
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
@@@ -201,8 -201,8 +201,8 @@@ public class UpdateErrors implements Me
      }
  
      /** {@inheritDoc} */
-     @Override public byte directType() {
+     @Override public short directType() {
 -        return -46;
 +        return -49;
      }
  
      /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
index c059f79,d5f2246..b270ca0
--- 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
@@@ -476,66 -439,47 +449,48 @@@ public class GridDhtPartitionDemander 
  
              GridDhtPartitionDemandMessage d = e.getValue();
  
-             //Check remote node rebalancing API version.
-             if (node.version().compareTo(GridDhtPreloader.REBALANCING_VER_2_SINCE) >= 0) {
-                 U.log(log, "Starting rebalancing [mode=" + cfg.getRebalanceMode() +
-                     ", fromNode=" + node.id() + ", partitionsCount=" + parts.size() +
-                     ", topology=" + fut.topologyVersion() + ", updateSeq=" + fut.updateSeq + "]");
- 
-                 int lsnrCnt = cctx.gridConfig().getRebalanceThreadPoolSize();
+             U.log(log, "Starting rebalancing [mode=" + cfg.getRebalanceMode() +
+                 ", fromNode=" + node.id() + ", partitionsCount=" + parts.size() +
+                 ", topology=" + fut.topologyVersion() + ", updateSeq=" + fut.updateSeq + "]");
  
-                 List<Set<Integer>> sParts = new ArrayList<>(lsnrCnt);
+             int lsnrCnt = cctx.gridConfig().getRebalanceThreadPoolSize();
  
-                 for (int cnt = 0; cnt < lsnrCnt; cnt++)
-                     sParts.add(new HashSet<Integer>());
+             List<Set<Integer>> sParts = new ArrayList<>(lsnrCnt);
  
-                 Iterator<Integer> it = parts.iterator();
+             for (int cnt = 0; cnt < lsnrCnt; cnt++)
+                 sParts.add(new HashSet<Integer>());
  
-                 int cnt = 0;
+             Iterator<Integer> it = parts.iterator();
  
-                 while (it.hasNext())
-                     sParts.get(cnt++ % lsnrCnt).add(it.next());
+             int cnt = 0;
  
-                 for (cnt = 0; cnt < lsnrCnt; cnt++) {
-                     if (!sParts.get(cnt).isEmpty()) {
-                         // Create copy.
-                         GridDhtPartitionDemandMessage initD = createDemandMessage(d, sParts.get(cnt));
+             while (it.hasNext())
+                 sParts.get(cnt++ % lsnrCnt).add(it.next());
  
-                         initD.topic(rebalanceTopics.get(cnt));
-                         initD.updateSequence(fut.updateSeq);
-                         initD.timeout(cctx.config().getRebalanceTimeout());
+             for (cnt = 0; cnt < lsnrCnt; cnt++) {
+                 if (!sParts.get(cnt).isEmpty()) {
+                     // Create copy.
 -                    GridDhtPartitionDemandMessage initD = new GridDhtPartitionDemandMessage(d, sParts.get(cnt));
++                    GridDhtPartitionDemandMessage initD = createDemandMessage(d, sParts.get(cnt));
  
-                         synchronized (fut) {
-                             if (fut.isDone())
-                                 return;
+                     initD.topic(rebalanceTopics.get(cnt));
+                     initD.updateSequence(fut.updateSeq);
+                     initD.timeout(cctx.config().getRebalanceTimeout());
  
-                             // Future can be already cancelled at this moment and all failovers happened.
-                             // New requests will not be covered by failovers.
-                             cctx.io().sendOrderedMessage(node,
-                                 rebalanceTopics.get(cnt), initD, cctx.ioPolicy(), initD.timeout());
-                         }
+                     synchronized (fut) {
 -                        if (!fut.isDone()) {
 -                            // Future can be already cancelled at this moment and all failovers happened.
 -                            // New requests will not be covered by failovers.
 -                            cctx.io().sendOrderedMessage(node,
 -                                rebalanceTopics.get(cnt), initD, cctx.ioPolicy(), initD.timeout());
 -                        }
++                        if (fut.isDone())
++                            return;// Future can be already cancelled at this moment and all failovers happened.
 +
-                         if (log.isDebugEnabled())
-                             log.debug("Requested rebalancing [from node=" + node.id() + ", listener index=" +
-                                 cnt + ", partitions count=" + sParts.get(cnt).size() +
-                                 " (" + partitionsList(sParts.get(cnt)) + ")]");
++                        // New requests will not be covered by failovers.
++                        cctx.io().sendOrderedMessage(node,
++                            rebalanceTopics.get(cnt), initD, cctx.ioPolicy(), initD.timeout());
                      }
-                 }
-             }
-             else {
-                 U.log(log, "Starting rebalancing (old api) [cache=" + cctx.name() +
-                     ", mode=" + cfg.getRebalanceMode() +
-                     ", fromNode=" + node.id() +
-                     ", partitionsCount=" + parts.size() +
-                     ", topology=" + fut.topologyVersion() +
-                     ", updateSeq=" + fut.updateSeq + "]");
- 
-                 d.timeout(cctx.config().getRebalanceTimeout());
-                 d.workerId(0);//old api support.
  
-                 worker = new DemandWorker(dmIdx.incrementAndGet(), fut);
 +
-                 worker.run(node, d);
+                     if (log.isDebugEnabled())
+                         log.debug("Requested rebalancing [from node=" + node.id() + ", listener index=" +
+                             cnt + ", partitions count=" + sParts.get(cnt).size() +
+                             " (" + partitionsList(sParts.get(cnt)) + ")]");
+                 }
              }
          }
      }

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessageV2.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
index f1e2c01,1f3dee7..96d7a88
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
@@@ -19,12 -19,9 +19,11 @@@ package org.apache.ignite.internal.proc
  
  import java.io.Externalizable;
  import java.nio.ByteBuffer;
 +import java.util.Map;
  import org.apache.ignite.internal.processors.cache.GridCacheMessage;
  import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 +import org.apache.ignite.internal.util.typedef.T2;
  import org.apache.ignite.internal.util.typedef.internal.S;
- import org.apache.ignite.lang.IgniteProductVersion;
  import org.apache.ignite.plugin.extensions.communication.MessageReader;
  import org.apache.ignite.plugin.extensions.communication.MessageWriter;
  import org.jetbrains.annotations.Nullable;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 829b29d,f41da2b..103bd49
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@@ -1838,10 -1475,8 +1838,10 @@@ public class GridDhtPartitionsExchangeF
       *
       * @param msg Partitions single message.
       */
 -    private void updatePartitionSingleMap(GridDhtPartitionsSingleMessage msg) {
 +    private void updatePartitionSingleMap(ClusterNode node, GridDhtPartitionsSingleMessage msg) {
 +        msgs.put(node.id(), msg);
 +
-         for (Map.Entry<Integer, GridDhtPartitionMap2> entry : msg.partitions().entrySet()) {
+         for (Map.Entry<Integer, GridDhtPartitionMap> entry : msg.partitions().entrySet()) {
              Integer cacheId = entry.getKey();
              GridCacheContext cacheCtx = cctx.cacheContext(cacheId);
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsFullMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
index 2f16c8c,da7403e..9003f3a
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
@@@ -161,10 -152,7 +161,10 @@@ public class GridDhtPartitionsSingleMes
      /**
       * @return Local partitions.
       */
-     public Map<Integer, GridDhtPartitionMap2> partitions() {
+     public Map<Integer, GridDhtPartitionMap> partitions() {
 +        if (parts == null)
 +            parts = new HashMap<>();
 +
          return parts;
      }
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/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 79192f5,dc988bd..7ffbf49
--- 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
@@@ -195,8 -185,9 +186,8 @@@ public class GridDhtPreloader extends G
          cctx.shared().affinity().onCacheCreated(cctx);
  
          supplier = new GridDhtPartitionSupplier(cctx);
-         demander = new GridDhtPartitionDemander(cctx, demandLock);
+         demander = new GridDhtPartitionDemander(cctx);
  
 -        supplier.start();
          demander.start();
  
          cctx.events().addListener(discoLsnr, EVT_NODE_JOINED, EVT_NODE_LEFT, EVT_NODE_FAILED);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
index e84555a,745bbde..8377754
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
@@@ -56,10 -56,8 +56,9 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
  import org.apache.ignite.internal.processors.cache.GridCacheManagerAdapter;
  import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 +import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
  import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture;
  import org.apache.ignite.internal.processors.continuous.GridContinuousHandler;
- import org.apache.ignite.internal.processors.continuous.GridContinuousProcessor;
  import org.apache.ignite.internal.util.tostring.GridToStringInclude;
  import org.apache.ignite.internal.util.typedef.CI2;
  import org.apache.ignite.internal.util.typedef.F;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLock.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopJobId.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopDirectShuffleMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffleAck.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffleMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/GridMarshallerMappingProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MissingMappingRequestMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MissingMappingResponseMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 5ed3853,676c836..6c5922b
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@@ -339,80 -308,6 +339,80 @@@ public class GridQueryProcessor extend
      }
  
      /**
 +     * Rebuilds indexes for provided caches from corresponding hash indexes.
 +     *
 +     * @param cacheIds Cache IDs.
 +     * @return Future that will be completed when rebuilding is finished.
 +     */
 +    public IgniteInternalFuture<?> rebuildIndexesFromHash(Collection<Integer> cacheIds) {
 +        if (!busyLock.enterBusy())
 +            throw new IllegalStateException("Failed to get space size (grid is stopping).");
 +
 +        try {
 +            GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<Object, Object>();
 +
 +            for (Map.Entry<QueryTypeIdKey, QueryTypeDescriptorImpl> e : types.entrySet()) {
 +                if (cacheIds.contains(CU.cacheId(e.getKey().space())))
 +                    fut.add(rebuildIndexesFromHash(e.getKey().space(), e.getValue()));
 +            }
 +
 +            fut.markInitialized();
 +
 +            return fut;
 +        }
 +        finally {
 +            busyLock.leaveBusy();
 +        }
 +    }
 +
 +    /**
 +     * @param space Space.
 +     * @param desc Type descriptor.
 +     * @return Future that will be completed when rebuilding of all indexes is finished.
 +     */
 +    private IgniteInternalFuture<Object> rebuildIndexesFromHash(
 +        @Nullable final String space,
 +        @Nullable final QueryTypeDescriptorImpl desc
 +    ) {
 +        if (idx == null)
 +            return new GridFinishedFuture<>(new IgniteCheckedException("Indexing is disabled."));
 +
-         if (desc == null || !desc.registered())
++        if (desc == null)
 +            return new GridFinishedFuture<>();
 +
 +        final GridWorkerFuture<Object> fut = new GridWorkerFuture<>();
 +
 +        idx.markForRebuildFromHash(space, desc);
 +
 +        GridWorker w = new GridWorker(ctx.igniteInstanceName(), "index-rebuild-worker", log) {
 +            @Override protected void body() {
 +                try {
 +                    idx.rebuildIndexesFromHash(space, desc);
 +
 +                    fut.onDone();
 +                }
 +                catch (Exception e) {
 +                    fut.onDone(e);
 +                }
 +                catch (Throwable e) {
 +                    log.error("Failed to rebuild indexes for type: " + desc.name(), e);
 +
 +                    fut.onDone(e);
 +
 +                    if (e instanceof Error)
 +                        throw e;
 +                }
 +            }
 +        };
 +
 +        fut.setWorker(w);
 +
 +        ctx.getExecutorService().execute(w);
 +
 +        return fut;
 +    }
 +
 +    /**
       * @param space Space name.
       * @return Cache object context.
       */
@@@ -455,61 -343,28 +455,61 @@@
          try {
              CacheObjectContext coctx = cacheObjectContext(space);
  
 -            Class<?> valCls = null;
 +            QueryTypeDescriptorImpl desc = typeByValue(coctx, key, val, true);
  
 -            QueryTypeIdKey id;
 +            if (prevVal != null) {
 +                QueryTypeDescriptorImpl prevValDesc = typeByValue(coctx, key, prevVal, false);
  
 -            boolean binaryVal = ctx.cacheObjects().isBinaryObject(val);
 +                if (prevValDesc != null && prevValDesc != desc)
 +                    idx.remove(space, prevValDesc, key, partId, prevVal, prevVer);
 +            }
  
 -            if (binaryVal) {
 -                int typeId = ctx.cacheObjects().typeId(val);
 +            if (desc == null)
 +                return;
  
 -                id = new QueryTypeIdKey(space, typeId);
 -            }
 -            else {
 -                valCls = val.value(coctx, false).getClass();
 +            idx.store(space, desc, key, partId, val, ver, expirationTime, link);
 +        }
 +        finally {
 +            busyLock.leaveBusy();
 +        }
 +    }
  
 -                id = new QueryTypeIdKey(space, valCls);
 -            }
 +    /**
 +     * @param coctx Cache context.
 +     * @param key Key.
 +     * @param val Value.
 +     * @param checkType If {@code true} checks that key and value type correspond to found TypeDescriptor.
 +     * @return Type descriptor if found.
 +     * @throws IgniteCheckedException If type check failed.
 +     */
 +    @Nullable private QueryTypeDescriptorImpl typeByValue(CacheObjectContext coctx,
 +        KeyCacheObject key,
 +        CacheObject val,
 +        boolean checkType)
 +        throws IgniteCheckedException {
 +        Class<?> valCls = null;
  
 -            QueryTypeDescriptorImpl desc = types.get(id);
 +        QueryTypeIdKey id;
  
 -            if (desc == null)
 -                return;
 +        boolean binaryVal = ctx.cacheObjects().isBinaryObject(val);
 +
 +        if (binaryVal) {
 +            int typeId = ctx.cacheObjects().typeId(val);
  
 +            id = new QueryTypeIdKey(coctx.cacheName(), typeId);
 +        }
 +        else {
 +            valCls = val.value(coctx, false).getClass();
 +
 +            id = new QueryTypeIdKey(coctx.cacheName(), valCls);
 +        }
 +
 +        QueryTypeDescriptorImpl desc = types.get(id);
 +
-         if (desc == null || !desc.registered())
++        if (desc == null)
 +            return null;
 +
 +        if (checkType) {
              if (!binaryVal && !desc.valueClass().isAssignableFrom(valCls))
                  throw new IgniteCheckedException("Failed to update index due to class name conflict" +
                      "(multiple classes with same simple name are stored in the same cache) " +

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
index a4da5e1,5b29fbb..7677d0d
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
@@@ -73,28 -73,8 +73,11 @@@ public class QueryTypeDescriptorImpl im
      private boolean valTextIdx;
  
      /** */
 +    private int typeId;
 +
 +    /** */
      private String affKey;
  
-     /** SPI can decide not to register this type. */
-     private boolean registered;
- 
-     /**
-      * @return {@code True} if type registration in SPI was finished and type was not rejected.
-      */
-     public boolean registered() {
-         return registered;
-     }
- 
-     /**
-      * @param registered Sets registered flag.
-      */
-     public void registered(boolean registered) {
-         this.registered = registered;
-     }
- 
      /** {@inheritDoc} */
      @Override public String name() {
          return name;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryFailResponse.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index 1900ac7,d37eb9f..16a4b76
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@@ -120,14 -116,8 +117,8 @@@ import static org.apache.ignite.transac
   * Grid service processor.
   */
  @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter", "ConstantConditions"})
 -public class GridServiceProcessor extends GridProcessorAdapter {
 +public class GridServiceProcessor extends GridProcessorAdapter implements IgniteChangeGlobalStateSupport {
      /** */
-     public static final IgniteProductVersion LAZY_SERVICES_CFG_SINCE = IgniteProductVersion.fromString("1.5.22");
- 
-     /** Versions that only compatible with each other, and from 1.5.33. */
-     private static final Set<IgniteProductVersion> SERVICE_TOP_CALLABLE_VER1;
- 
-     /** */
      private final Boolean srvcCompatibilitySysProp;
  
      /** Time to wait before reassignment retries. */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java
index 16d20c1,ec6a350..f239ed9
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java
@@@ -26,12 -25,13 +26,13 @@@ import org.apache.ignite.cache.CachePee
  import org.apache.ignite.configuration.CacheConfiguration;
  import org.apache.ignite.internal.IgniteEx;
  import org.apache.ignite.internal.LessNamingBean;
+ import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
  import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
 +import org.apache.ignite.internal.processors.cache.GridCacheContext;
  import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
 -import org.apache.ignite.internal.processors.cache.GridCacheSwapManager;
  import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
  import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionTopology;
- import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap2;
+ import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap;
  import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter;
  import org.apache.ignite.internal.util.typedef.internal.S;
  import org.apache.ignite.lang.IgniteUuid;
@@@ -84,6 -89,23 +85,9 @@@ public class VisorCache implements Seri
      /** Number of partitions. */
      private int partitions;
  
 -    /**
 -     * Flag indicating that cache has near cache.
 -     */
++    /** Flag indicating that cache has near cache. */
+     private boolean near;
+ 
 -    /** Number of primary entries in offheap. */
 -    private int offHeapPrimaryEntriesCnt;
 -
 -    /** Number of backup entries in offheap. */
 -    private int offHeapBackupEntriesCnt;
 -
 -    /** Number of primary entries in swap. */
 -    private int swapPrimaryEntriesCnt;
 -
 -    /** Number of backup entries in swap. */
 -    private int swapBackupEntriesCnt;
 -
      /** Cache metrics. */
      private VisorCacheMetrics metrics;
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorGatewayTask.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index cc07f3e,3e7d815..7dad586
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@@ -3670,73 -3639,11 +3651,37 @@@ class ServerImpl extends TcpDiscoveryIm
                      return;
                  }
  
 +                boolean locActiveOnStart = booleanAttribute(locNode, ATTR_ACTIVE_ON_START, true);
 +                boolean rmtActiveOnStart = booleanAttribute(node, ATTR_ACTIVE_ON_START, true);
 +
 +                if (locActiveOnStart != rmtActiveOnStart) {
 +                    String errMsg = "Local node's active on start flag differs from " +
 +                        "the same property on remote node (make sure all nodes in topology have the same " +
 +                        "active on start flag) [locActiveOnStart=" + locActiveOnStart +
 +                        ", rmtActiveOnStart=" + rmtActiveOnStart +
 +                        ", locNodeAddrs=" + U.addressesAsString(locNode) +
 +                        ", rmtNodeAddrs=" + U.addressesAsString(node) +
 +                        ", locNodeId=" + locNode.id() + ", rmtNodeId=" + msg.creatorNodeId() + ']';
 +
 +                    String sndMsg = "Local node's active on start flag differs from " +
 +                        "the same property on remote node (make sure all nodes in topology have the same " +
 +                        "active on start flag) [locActiveOnStart=" + rmtActiveOnStart +
 +                        ", rmtActiveOnStart=" + locActiveOnStart +
 +                        ", locNodeAddrs=" + U.addressesAsString(node) + ", locPort=" + node.discoveryPort() +
 +                        ", rmtNodeAddr=" + U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
 +                        ", rmtNodeId=" + locNode.id() + ']';
 +
 +                    nodeCheckError(node, errMsg, sndMsg);
 +
 +                    // Ignore join request.
 +                    return;
 +                }
 +
                  final Boolean locSrvcCompatibilityEnabled = locNode.attribute(ATTR_SERVICES_COMPATIBILITY_MODE);
  
-                 if (node.version().compareToIgnoreTimestamp(GridServiceProcessor.LAZY_SERVICES_CFG_SINCE) >= 0) {
-                     final Boolean rmtSrvcCompatibilityEnabled = node.attribute(ATTR_SERVICES_COMPATIBILITY_MODE);
- 
-                     if (!F.eq(locSrvcCompatibilityEnabled, rmtSrvcCompatibilityEnabled)) {
-                         utilityPool.execute(
-                             new Runnable() {
-                                 @Override public void run() {
-                                     String errMsg = "Local node's " + IGNITE_SERVICES_COMPATIBILITY_MODE +
-                                         " property value differs from remote node's value " +
-                                         "(to make sure all nodes in topology have identical IgniteServices compatibility mode, " +
-                                         "configure system property explicitly) " +
-                                         "[locSrvcCompatibilityEnabled=" + locSrvcCompatibilityEnabled +
-                                         ", rmtSrvcCompatibilityEnabled=" + rmtSrvcCompatibilityEnabled +
-                                         ", locNodeAddrs=" + U.addressesAsString(locNode) +
-                                         ", rmtNodeAddrs=" + U.addressesAsString(node) +
-                                         ", locNodeId=" + locNode.id() + ", rmtNodeId=" + msg.creatorNodeId() + ']';
- 
-                                     String sndMsg = "Local node's " + IGNITE_SERVICES_COMPATIBILITY_MODE +
-                                         " property value differs from remote node's value " +
-                                         "(to make sure all nodes in topology have identical IgniteServices compatibility mode, " +
-                                         "configure system property explicitly) " +
-                                         "[locSrvcCompatibilityEnabled=" + rmtSrvcCompatibilityEnabled +
-                                         ", rmtSrvcCompatibilityEnabled=" + locSrvcCompatibilityEnabled +
-                                         ", locNodeAddrs=" + U.addressesAsString(node) + ", locPort=" + node.discoveryPort() +
-                                         ", rmtNodeAddr=" + U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
-                                         ", rmtNodeId=" + locNode.id() + ']';
+                 final Boolean rmtSrvcCompatibilityEnabled = node.attribute(ATTR_SERVICES_COMPATIBILITY_MODE);
  
-                                     nodeCheckError(
-                                         node,
-                                         errMsg,
-                                         sndMsg);
-                                 }
-                             });
- 
-                         // Ignore join request.
-                         return;
-                     }
-                 }
-                 else if (Boolean.FALSE.equals(locSrvcCompatibilityEnabled)) {
+                 if (!F.eq(locSrvcCompatibilityEnabled, rmtSrvcCompatibilityEnabled)) {
                      utilityPool.execute(
                          new Runnable() {
                              @Override public void run() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
diff --cc modules/core/src/main/resources/META-INF/classnames.properties
index 988d889,c5f4b92..3598447
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@@ -63,6 -63,6 +64,7 @@@ org.apache.ignite.cache.affinity.fair.F
  org.apache.ignite.cache.affinity.fair.FairAffinityFunction$PartitionSetComparator
  org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction
  org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction$HashComparator
++org.apache.ignite.cache.eviction.AbstractEvictionPolicy
  org.apache.ignite.cache.eviction.EvictionFilter
  org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy
  org.apache.ignite.cache.eviction.igfs.IgfsEvictionFilter
@@@ -144,7 -144,6 +146,8 @@@ org.apache.ignite.configuration.CacheCo
  org.apache.ignite.configuration.CollectionConfiguration
  org.apache.ignite.configuration.DeploymentMode
  org.apache.ignite.configuration.IgniteReflectionFactory
 +org.apache.ignite.configuration.MemoryConfiguration
++org.apache.ignite.configuration.MemoryPolicyConfiguration
  org.apache.ignite.configuration.NearCacheConfiguration
  org.apache.ignite.configuration.TopologyValidator
  org.apache.ignite.configuration.TransactionConfiguration
@@@ -229,6 -230,6 +234,7 @@@ org.apache.ignite.internal.IgniteKerna
  org.apache.ignite.internal.IgniteKernal$1
  org.apache.ignite.internal.IgniteKernal$5
  org.apache.ignite.internal.IgniteMessagingImpl
++org.apache.ignite.internal.IgniteNeedReconnectException
  org.apache.ignite.internal.IgniteSchedulerImpl
  org.apache.ignite.internal.IgniteServicesImpl
  org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$1
@@@ -503,6 -490,6 +510,7 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$5
  org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$6
  org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$7
++org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$8
  org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeFutureSet
  org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$MessageHandler
  org.apache.ignite.internal.processors.cache.GridCacheProcessor$2
@@@ -515,9 -502,25 +523,10 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.GridCacheProcessor$LocalAffinityFunction
  org.apache.ignite.internal.processors.cache.GridCacheProxyImpl
  org.apache.ignite.internal.processors.cache.GridCacheReturn
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$12
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$14
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$16
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$17
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$18
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$19
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$20
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$23
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$3
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$4
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$5
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$6
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$7
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$8
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$9
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$CloseablePartitionsIterator
 -org.apache.ignite.internal.processors.cache.GridCacheSwapManager$IteratorWrapper
  org.apache.ignite.internal.processors.cache.GridCacheTryPutFailedException
 +org.apache.ignite.internal.processors.cache.GridCacheTtlManager$1
  org.apache.ignite.internal.processors.cache.GridCacheTtlManager$GridConcurrentSkipListSetEx
++org.apache.ignite.internal.processors.cache.GridCacheUpdateAtomicResult$UpdateOutcome
  org.apache.ignite.internal.processors.cache.GridCacheUtilityKey
  org.apache.ignite.internal.processors.cache.GridCacheUtils$1
  org.apache.ignite.internal.processors.cache.GridCacheUtils$10
@@@ -540,45 -543,33 +549,50 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.GridCacheUtils$9
  org.apache.ignite.internal.processors.cache.GridCacheValueCollection
  org.apache.ignite.internal.processors.cache.GridCacheValueCollection$1
 +org.apache.ignite.internal.processors.cache.GridChangeGlobalStateMessageResponse
  org.apache.ignite.internal.processors.cache.GridDeferredAckMessageSender$DeferredAckMessageBuffer
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$1
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$2
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$3
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$4
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$5
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$7
 +org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$8
++org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl$1
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy$1
- org.apache.ignite.internal.processors.cache.IgniteCacheProxy$10
++org.apache.ignite.internal.processors.cache.IgniteCacheProxy$1$1
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy$2
--org.apache.ignite.internal.processors.cache.IgniteCacheProxy$2$1
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy$3
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy$4
--org.apache.ignite.internal.processors.cache.IgniteCacheProxy$5
++org.apache.ignite.internal.processors.cache.IgniteCacheProxy$6
+ org.apache.ignite.internal.processors.cache.IgniteCacheProxy$7
  org.apache.ignite.internal.processors.cache.IgniteCacheProxy$8
--org.apache.ignite.internal.processors.cache.IgniteCacheProxy$9
 +org.apache.ignite.internal.processors.cache.IgniteRebalanceIterator
  org.apache.ignite.internal.processors.cache.KeyCacheObject
  org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl
  org.apache.ignite.internal.processors.cache.QueryCursorImpl$State
  org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityProxy
++org.apache.ignite.internal.processors.cache.binary.BinaryMetadataHolder
  org.apache.ignite.internal.processors.cache.binary.BinaryMetadataKey
  org.apache.ignite.internal.processors.cache.binary.CacheDefaultBinaryAffinityKeyMapper
- org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$4
 -org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$1
 -org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$5
 -org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$6
--org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetaDataEntryFilter
--org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetaDataPredicate
--org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetadataProcessor
++org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$3
++org.apache.ignite.internal.processors.cache.binary.MetadataRequestMessage
++org.apache.ignite.internal.processors.cache.binary.MetadataResponseMessage
++org.apache.ignite.internal.processors.cache.binary.MetadataResponseMessage$ClientResponseStatus
++org.apache.ignite.internal.processors.cache.binary.MetadataUpdateAcceptedMessage
++org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage
++org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage$ProposalStatus
++org.apache.ignite.internal.processors.cache.binary.MetadataUpdateResult$ResultType
++org.apache.ignite.internal.processors.cache.database.CacheDataRowAdapter$RowData
 +org.apache.ignite.internal.processors.cache.database.tree.BPlusTree$Bool
 +org.apache.ignite.internal.processors.cache.database.tree.BPlusTree$DestroyBag
 +org.apache.ignite.internal.processors.cache.database.tree.BPlusTree$Result
 +org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO$EntryPart
  org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$BlockSetCallable
  org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$QueueHeaderPredicate
  org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$RemoveSetDataCallable
--org.apache.ignite.internal.processors.cache.distributed.GridCacheCommittedTxInfo
  org.apache.ignite.internal.processors.cache.distributed.GridCacheTtlUpdateRequest
  org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryFuture$1
  org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryFuture$2
@@@ -632,7 -622,7 +645,6 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$1
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$10
--org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$10$1
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$11
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$2
  org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$3
@@@ -718,6 -713,7 +735,8 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateFuture$2
  org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateFuture$3
  org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse
++org.apache.ignite.internal.processors.cache.distributed.dht.atomic.NearCacheUpdates
+ org.apache.ignite.internal.processors.cache.distributed.dht.atomic.UpdateErrors
  org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache
  org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache$2
  org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache$3
@@@ -740,14 -736,12 +759,11 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$1$1
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$2
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$3
- org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$3$1
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$4$1
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$5$1
- org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$DemandWorker$1
- org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$DemandWorker$2
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap
- org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap2
+ org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap
 -org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplier$1
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplier$SupplyContextPhase
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessage
  org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessageV2
@@@ -819,13 -813,13 +835,26 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishResponse
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$1
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$10
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$11
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$12
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$13
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$14
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$15
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$16
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$17
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$18
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$19
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$20
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$21
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$3
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$4
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$5
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$6
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$7
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$8
++org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$FinishClosure
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareFutureAdapter$1
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareRequest
  org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse
@@@ -868,12 -865,17 +897,15 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$9
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CacheSqlIndexMetadata
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CacheSqlMetadata
+ org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CachedResult
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CachedResult$QueueIterator
 -org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CompoundIterator
+ org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$FieldsResult
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$1
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$2
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$3
 -org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$OffheapIteratorClosure
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator
+ org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$QueryResult
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$RequestFutureMap
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$RequestFutureMap$1
  org.apache.ignite.internal.processors.cache.query.GridCacheQueryMetricsAdapter
@@@ -935,19 -938,19 +968,6 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$9
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$1
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$10
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$11
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$12
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$13
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$14
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$15
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$2
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$4
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$5
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$6
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$9
--org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$FinishClosure
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PLC1
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PLC2
  org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PMC
@@@ -985,18 -988,12 +1005,12 @@@ org.apache.ignite.internal.processors.c
  org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl$UserKeyCacheObjectImpl
  org.apache.ignite.internal.processors.clock.GridClockDeltaSnapshotMessage
  org.apache.ignite.internal.processors.clock.GridClockDeltaVersion
 -org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1MLA
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1
 -org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2MLA
 +org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1MLA
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1MLAV2
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1V2
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2
 -org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4MLA
 +org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2MLA
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2MLAV2
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2V2
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4
 +org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4MLA
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4MLAV2
- org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4V2
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$T1
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$T10
  org.apache.ignite.internal.processors.closure.GridClosureProcessor$T11
@@@ -1292,9 -1292,8 +1313,9 @@@ org.apache.ignite.internal.processors.q
  org.apache.ignite.internal.processors.query.GridQueryProcessor$5
  org.apache.ignite.internal.processors.query.GridQueryProcessor$6
  org.apache.ignite.internal.processors.query.GridQueryProcessor$7
 +org.apache.ignite.internal.processors.query.GridQueryProcessor$8
- org.apache.ignite.internal.processors.query.GridQueryProcessor$IndexType
  org.apache.ignite.internal.processors.query.IgniteSQLException
+ org.apache.ignite.internal.processors.query.QueryUtils$IndexType
  org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryCancelRequest
  org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryFailResponse
  org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryNextPageRequest
@@@ -1467,6 -1465,6 +1488,7 @@@ org.apache.ignite.internal.util.GridSpi
  org.apache.ignite.internal.util.GridStringBuilder
  org.apache.ignite.internal.util.GridSynchronizedMap
  org.apache.ignite.internal.util.IgniteExceptionRegistry$ExceptionInfo
++org.apache.ignite.internal.util.IgniteTree$OperationType
  org.apache.ignite.internal.util.IgniteUtils$10
  org.apache.ignite.internal.util.IgniteUtils$11
  org.apache.ignite.internal.util.IgniteUtils$12

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/cache/store/IgniteCacheExpiryStoreLoadSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerLocalMessageListenerSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridCommunicationSendMessageSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFailoverSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index 08dc56a,20bd9eb..de0b532
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@@ -5586,12 -6192,16 +6193,15 @@@ public abstract class GridCacheAbstract
      /**
       * @param ignite Node.
       * @param cache Cache.
+      * @param async Use async API.
+      * @param oldAsync Use old async API.
       * @throws Exception If failed.
       */
-     private void doTransformResourceInjection(Ignite ignite, IgniteCache<String, Integer> cache) throws Exception {
+     private void doTransformResourceInjection(Ignite ignite, IgniteCache<String, Integer> cache, boolean async,
+         boolean oldAsync) throws Exception {
          final Collection<ResourceType> required = Arrays.asList(ResourceType.IGNITE_INSTANCE,
              ResourceType.CACHE_NAME,
 -            ResourceType.LOGGER,
 -            ResourceType.SERVICE);
 +            ResourceType.LOGGER);
  
          final CacheEventListener lsnr = new CacheEventListener();
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigVariationsFullApiTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2c480b4f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java
----------------------------------------------------------------------