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/03/07 10:33:55 UTC

[1/4] ignite git commit: ignite-4705

Repository: ignite
Updated Branches:
  refs/heads/ignite-4705-debug [created] b1992a92b


ignite-4705


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

Branch: refs/heads/ignite-4705-debug
Commit: a53cfeb0c31d7174947b1fe6ec5403e8ed637319
Parents: 25f2ced
Author: sboikov <sb...@gridgain.com>
Authored: Mon Mar 6 16:48:40 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Mar 6 16:48:40 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheMapEntry.java     |  7 +++++
 .../dht/atomic/GridDhtAtomicCache.java          |  6 +++++
 .../GridNearAtomicAbstractUpdateFuture.java     |  6 +++++
 .../GridNearAtomicCheckUpdateRequest.java       | 13 ++++++++-
 .../GridNearAtomicSingleUpdateFuture.java       | 23 +++++++++++++---
 .../IgniteCachePutRetryAbstractSelfTest.java    | 28 ++++++++++++++++++--
 .../dht/IgniteCachePutRetryAtomicSelfTest.java  |  2 +-
 .../IgniteCacheFailoverTestSuite3.java          |  4 +--
 8 files changed, 79 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 6124864..ca11e84 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -44,6 +44,7 @@ import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition;
 import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.TestDebugLog;
 import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry;
 import org.apache.ignite.internal.processors.cache.extras.GridCacheEntryExtras;
 import org.apache.ignite.internal.processors.cache.extras.GridCacheMvccEntryExtras;
@@ -2038,6 +2039,8 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
         Long updateCntr0 = null;
 
         synchronized (this) {
+            TestDebugLog.addKeyMessage(key, ((CacheObject)writeObj).value(cctx.cacheObjectContext(), false), "innerUpdate");
+
             boolean internal = isInternal() || !context().userCache();
 
             Map<UUID, CacheContinuousQueryListener> lsnrs = cctx.continuousQueries().updateListeners(internal, false);
@@ -2277,6 +2280,8 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
                                 topVer);
                         }
 
+                        TestDebugLog.addKeyMessage(key, ((CacheObject)writeObj).value(cctx.cacheObjectContext(), false), "ver check failed");
+
                         return new GridCacheUpdateAtomicResult(false,
                             retval ? rawGetOrUnmarshalUnlocked(false) : null,
                             null,
@@ -3485,6 +3490,8 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
             checkObsolete();
 
             if ((isNew() && !cctx.swap().containsKey(key, partition())) || (!preload && deletedUnlocked())) {
+                TestDebugLog.addKeyMessage(key, val.value(cctx.cacheObjectContext(), false), "rebalance");
+
                 long expTime = expireTime < 0 ? CU.toExpireTime(ttl) : expireTime;
 
                 val = cctx.kernalContext().cacheObjects().prepareForCache(val, cctx);

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 5af82b3..d690737 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -1727,6 +1727,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
         GridNearAtomicAbstractUpdateRequest req,
         UpdateReplyClosure completionCb
     ) {
+        TestDebugLog.addKeyMessage(req.key(0), req.topologyVersion(), "req, on primary");
+
         ClusterNode node = ctx.discovery().node(nodeId);
 
         if (node == null) {
@@ -1906,6 +1908,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
         }
 
         if (remap) {
+            TestDebugLog.addKeyMessage(req.key(0), res.remapTopologyVersion(), "primary, need remap");
+
             assert dhtFut == null;
 
             completionCb.apply(req, res);
@@ -3085,6 +3089,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             checkReq.futureId(),
             false);
 
+        res.partition(checkReq.partition());
+
         GridCacheReturn ret = new GridCacheReturn(false, true);
 
         res.returnValue(ret);

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
index f0c50c2..7c70b96 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
@@ -214,6 +214,8 @@ public abstract class GridNearAtomicAbstractUpdateFuture extends GridFutureAdapt
 
     void sendCheckUpdateRequest(GridNearAtomicCheckUpdateRequest req) {
         try {
+            TestDebugLog.addEntryMessage(req.updateRequest().key(0), req.updateRequest().nodeId(), "send primary check");
+
             cctx.io().send(req.updateRequest().nodeId(), req, cctx.ioPolicy());
         }
         catch (ClusterTopologyCheckedException e) {
@@ -329,6 +331,8 @@ public abstract class GridNearAtomicAbstractUpdateFuture extends GridFutureAdapt
     public abstract void onDhtResponse(UUID nodeId, GridDhtAtomicNearResponse res);
 
     final void onPrimaryError(GridNearAtomicAbstractUpdateRequest req, GridNearAtomicUpdateResponse res) {
+        TestDebugLog.addEntryMessage(req.key(0), req.nodeId(), "primary err");
+
         assert res.error() != null;
 
         if (err == null)
@@ -476,6 +480,8 @@ public abstract class GridNearAtomicAbstractUpdateFuture extends GridFutureAdapt
                 UUID nodeId = it.next();
 
                 if (!cctx.discovery().alive(nodeId)) {
+                    TestDebugLog.addEntryMessage(req.key(0), nodeId, "check dht alive, found left");
+
                     it.remove();
 
                     if (finished()) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicCheckUpdateRequest.java
----------------------------------------------------------------------
diff --git 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
index a30269b..890ef67 100644
--- 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
@@ -51,19 +51,30 @@ public class GridNearAtomicCheckUpdateRequest extends GridCacheMessage {
         // No-op.
     }
 
+    /**
+     * @param updateReq Related update request.
+     */
     GridNearAtomicCheckUpdateRequest(GridNearAtomicAbstractUpdateRequest updateReq) {
-        assert updateReq != null;
+        assert updateReq != null && updateReq.fullSync() : updateReq;
 
         this.updateReq = updateReq;
         this.cacheId = updateReq.cacheId();
         this.partId = updateReq.partition();
         this.futId = updateReq.futureId();
+
+        assert partId >= 0;
     }
 
+    /**
+     * @return Future ID on near node.
+     */
     long futureId() {
         return futId;
     }
 
+    /**
+     * @return Related update request.
+     */
     GridNearAtomicAbstractUpdateRequest updateRequest() {
         return updateReq;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index cb013f7..fa3fa71 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@ -148,6 +148,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             if (reqState.req.nodeId.equals(nodeId)) {
                 GridNearAtomicAbstractUpdateRequest req = reqState.processPrimaryResponse(nodeId);
 
+                TestDebugLog.addEntryMessage(key, nodeId, "node left, primary");
+
                 if (req != null) {
                     GridNearAtomicUpdateResponse res = primaryFailedResponse(req);
 
@@ -161,6 +163,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             else {
                 DhtLeftResult res = reqState.onDhtNodeLeft(nodeId);
 
+                TestDebugLog.addEntryMessage(key, res, "node left, dht check");
+
                 if (res == DhtLeftResult.DONE)
                     rcvAll = true;
                 else if (res == DhtLeftResult.ALL_RCVD_CHECK_PRIMARY)
@@ -200,6 +204,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
         if (super.onDone(retval, err)) {
             Long futVer = onFutureDone();
 
+            TestDebugLog.addEntryMessage(key, futVer, "fut done");
+
             if (futVer != null)
                 cctx.mvcc().removeAtomicFuture(futVer);
 
@@ -225,6 +231,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             if (opRes == null && res.hasResult())
                 opRes = res.result();
 
+            TestDebugLog.addEntryMessage(key, nodeId, "dht res");
+
             if (reqState.onDhtResponse(nodeId, res)) {
                 opRes0 = opRes;
                 err0 = err;
@@ -248,7 +256,6 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
     }
 
     /** {@inheritDoc} */
-    @SuppressWarnings({"unchecked", "ThrowableResultOfMethodCallIgnored"})
     @Override public void onPrimaryResponse(UUID nodeId, GridNearAtomicUpdateResponse res, boolean nodeErr) {
         GridNearAtomicAbstractUpdateRequest req;
 
@@ -269,6 +276,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             boolean remapKey = res.remapTopologyVersion() != null;
 
             if (remapKey) {
+                TestDebugLog.addEntryMessage(key, nodeId, "remap " + res.remapTopologyVersion());
+
                 assert !req.topologyVersion().equals(res.remapTopologyVersion());
 
                 assert remapTopVer == null : remapTopVer;
@@ -297,6 +306,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
 
                 assert reqState != null;
 
+                TestDebugLog.addEntryMessage(key, nodeId, "primary res");
+
                 if (!reqState.onPrimaryResponse(res, cctx))
                     return;
             }
@@ -315,15 +326,15 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             return;
         }
 
-        if (nearEnabled && !nodeErr)
-            updateNear(req, res);
-
         if (remapTopVer0 != null) {
             waitAndRemap(remapTopVer0);
 
             return;
         }
 
+        if (nearEnabled && !nodeErr)
+            updateNear(req, res);
+
         onDone(opRes0, err0);
     }
 
@@ -356,6 +367,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
             remapTopVer0 = remapTopVer;
 
         if (remapTopVer0 != null) {
+            TestDebugLog.addEntryMessage(key, remapTopVer0, "all rcvd, remap");
+
             cctx.mvcc().removeAtomicFuture(futId);
 
             reqState = null;
@@ -610,6 +623,8 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
 
         boolean needPrimaryRes = !mappingKnown || primary.isLocal() || nodes.size() == 1;
 
+        TestDebugLog.addEntryMessage(key, primary.id(), "mapped");
+
         GridNearAtomicAbstractUpdateRequest req;
 
         if (canUseSingleRequest()) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
index 096d631..206a744 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
@@ -45,6 +45,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.TestDebugLog;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.internal.util.typedef.X;
@@ -244,6 +245,9 @@ public abstract class IgniteCachePutRetryAbstractSelfTest extends GridCommonAbst
      * @throws Exception If failed.
      */
     protected final void checkRetry(Test test, TestMemoryMode memMode, boolean store) throws Exception {
+        if (test != Test.PUT)
+            return;
+
         ignite(0).createCache(cacheConfiguration(memMode, store));
 
         final AtomicBoolean finished = new AtomicBoolean();
@@ -255,10 +259,14 @@ public abstract class IgniteCachePutRetryAbstractSelfTest extends GridCommonAbst
                 Random rnd = new Random();
 
                 while (!finished.get()) {
+                    TestDebugLog.addMessage("stop node " + grid(3).cluster().localNode().id());
+
                     stopGrid(3);
 
                     U.sleep(300);
 
+                    TestDebugLog.addMessage("start node " + getTestGridName(3));
+
                     startGrid(3);
 
                     if (rnd.nextBoolean()) // OPC possible only when there is no migration from one backup to another.
@@ -286,11 +294,27 @@ public abstract class IgniteCachePutRetryAbstractSelfTest extends GridCommonAbst
                     while (System.currentTimeMillis() < stopTime) {
                         Integer val = ++iter;
 
-                        for (int i = 0; i < keysCnt; i++)
+                        for (int i = 0; i < keysCnt; i++) {
+                            TestDebugLog.addEntryMessage(i, val, "start put");
+
                             cache.put(i, val);
 
-                        for (int i = 0; i < keysCnt; i++)
+                            TestDebugLog.addEntryMessage(i, val, "end put");
+                        }
+
+                        for (int i = 0; i < keysCnt; i++) {
+                            if (!val.equals(cache.get(i))) {
+                                TestDebugLog.addEntryMessage(i, val, "wrong val");
+
+                                TestDebugLog.printKeyMessages("test_debug.txt", i);
+
+                                System.exit(33);
+                            }
+
                             assertEquals(val, cache.get(i));
+                        }
+
+                        TestDebugLog.clear();
                     }
 
                     break;

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAtomicSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAtomicSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAtomicSelfTest.java
index 3d7c7d7..a4f5035 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAtomicSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAtomicSelfTest.java
@@ -46,7 +46,7 @@ public class IgniteCachePutRetryAtomicSelfTest extends IgniteCachePutRetryAbstra
     /**
      * @throws Exception If failed.
      */
-    public void testPutInsideTransaction() throws Exception {
+    public void _testPutInsideTransaction() throws Exception {
         ignite(0).createCache(cacheConfiguration(GridTestUtils.TestMemoryMode.HEAP, false));
 
         CacheConfiguration<Integer, Integer> ccfg = new CacheConfiguration<>();

http://git-wip-us.apache.org/repos/asf/ignite/blob/a53cfeb0/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite3.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite3.java
index 85b6e93..d754585 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite3.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite3.java
@@ -36,8 +36,8 @@ public class IgniteCacheFailoverTestSuite3 extends TestSuite {
 
         suite.addTestSuite(IgniteCachePutRetryAtomicSelfTest.class);
         suite.addTestSuite(IgniteCachePutRetryAtomicPrimaryWriteOrderSelfTest.class);
-        suite.addTestSuite(IgniteCachePutRetryTransactionalSelfTest.class);
-        suite.addTestSuite(CacheGetInsideLockChangingTopologyTest.class);
+//        suite.addTestSuite(IgniteCachePutRetryTransactionalSelfTest.class);
+//        suite.addTestSuite(CacheGetInsideLockChangingTopologyTest.class);
 
         return suite;
     }


[3/4] ignite git commit: ignite-4705

Posted by sb...@apache.org.
ignite-4705


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

Branch: refs/heads/ignite-4705-debug
Commit: 17cf3399ff39be57898bd893b758013ddb29bf3b
Parents: 441e61e
Author: sboikov <sb...@gridgain.com>
Authored: Tue Mar 7 11:19:06 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Mar 7 11:19:06 2017 +0300

----------------------------------------------------------------------
 .../cache/distributed/dht/atomic/GridDhtAtomicCache.java |  8 ++++++++
 .../dht/atomic/GridNearAtomicSingleUpdateFuture.java     |  6 +++---
 .../GridCacheAtomicInvalidPartitionHandlingSelfTest.java | 11 ++++++++++-
 3 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/17cf3399/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 30076f2..de1c290 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -648,6 +648,14 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             true,
             false).get();
 
+        if (res == null) {
+            TestDebugLog.addEntryMessage(key, val, "null res");
+
+            TestDebugLog.printKeyMessages("test_debug.txt", key);
+
+            System.exit(33);
+        }
+
         assert res != null;
 
         return res;

http://git-wip-us.apache.org/repos/asf/ignite/blob/17cf3399/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index 604b1ff..a113b27 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@ -139,12 +139,12 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
 
         GridNearAtomicCheckUpdateRequest checkReq = null;
 
+        boolean rcvAll = false;
+
         synchronized (mux) {
             if (reqState == null)
                 return false;
 
-            boolean rcvAll = false;
-
             if (reqState.req.nodeId.equals(nodeId)) {
                 GridNearAtomicAbstractUpdateRequest req = reqState.processPrimaryResponse(nodeId);
 
@@ -182,7 +182,7 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
 
         if (checkReq != null)
             sendCheckUpdateRequest(checkReq);
-        else
+        else if (rcvAll)
             finishUpdateFuture(opRes0, err0, remapTopVer0);
 
         return false;

http://git-wip-us.apache.org/repos/asf/ignite/blob/17cf3399/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java
index 3fd4dd8..e144972 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java
@@ -244,6 +244,9 @@ public class GridCacheAtomicInvalidPartitionHandlingSelfTest extends GridCommonA
         this.writeSync = writeSync;
         this.memMode = memMode;
 
+        if (writeSync != FULL_SYNC)
+            return;
+
         final int gridCnt = 6;
 
         startGrids(gridCnt);
@@ -323,12 +326,16 @@ public class GridCacheAtomicInvalidPartitionHandlingSelfTest extends GridCommonA
                         try {
                             int cnt = rnd.nextInt(5);
 
-                            if (cnt < 2) {
+                            if (true || cnt < 2) {
                                 int key = rnd.nextInt(range);
 
                                 int val = rnd.nextInt();
 
+                                TestDebugLog.addEntryMessage(key, val, "start-put");
+
                                 cache.put(key, val);
+
+                                TestDebugLog.addEntryMessage(key, val, "put-done");
                             }
                             else {
                                 Map<Integer, Integer> upd = new TreeMap<>();
@@ -367,6 +374,8 @@ public class GridCacheAtomicInvalidPartitionHandlingSelfTest extends GridCommonA
 
             fut.get();
 
+            TestDebugLog.clear();
+
             for (int k = 0; k < range; k++) {
                 Collection<ClusterNode> affNodes = affinity(cache).mapKeyToPrimaryAndBackups(k);
 


[4/4] ignite git commit: ignite-4705

Posted by sb...@apache.org.
ignite-4705


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

Branch: refs/heads/ignite-4705-debug
Commit: b1992a92ba953080f13d01d4c2c72c898373978f
Parents: 17cf339
Author: sboikov <sb...@gridgain.com>
Authored: Tue Mar 7 13:33:45 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Mar 7 13:33:45 2017 +0300

----------------------------------------------------------------------
 .../GridCachePartitionExchangeManager.java      |  10 +
 .../GridNearAtomicSingleUpdateFuture.java       |   4 +
 .../distributed/dht/atomic/TestDebugLog.java    | 394 +++++++++++++++++++
 .../cache/GridCachePutAllFailoverSelfTest.java  |   7 +
 .../processors/cache/GridCachePutAllTask.java   |   6 +-
 ...IgniteCacheAtomicPutAllFailoverSelfTest.java |   4 +
 .../IgniteCacheRestartTestSuite2.java           |  10 -
 7 files changed, 423 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index 14a0fb4..e7bfdd4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -64,6 +64,8 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartit
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopologyFuture;
 import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture;
 import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.TestDebugLog;
 import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemandMessage;
 import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId;
 import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap;
@@ -1424,6 +1426,14 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                         if (longRunningOpsDumpCnt < GridDhtPartitionsExchangeFuture.DUMP_PENDING_OBJECTS_THRESHOLD) {
                             U.warn(log, "Found long running cache future [startTime=" + formatTime(fut.startTime()) +
                                 ", curTime=" + formatTime(curTime) + ", fut=" + fut + ']');
+
+                            if (fut instanceof GridNearAtomicSingleUpdateFuture) {
+                                TestDebugLog.addEntryMessage(((GridNearAtomicSingleUpdateFuture) fut).key(), null, "hang fut");
+
+                                TestDebugLog.printKeyMessages("test_debug.txt", ((GridNearAtomicSingleUpdateFuture) fut).key());
+
+                                System.exit(44);
+                            }
                         }
                         else
                             break;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index a113b27..fccb23d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@ -124,6 +124,10 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
         this.val = val;
     }
 
+    public Object key() {
+        return key;
+    }
+
     /** {@inheritDoc} */
     @Override public Long id() {
         synchronized (mux) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/TestDebugLog.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/TestDebugLog.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/TestDebugLog.java
new file mode 100644
index 0000000..bf4f4f0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/TestDebugLog.java
@@ -0,0 +1,394 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed.dht.atomic;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessage;
+
+/**
+ * TODO
+ if (!cacheMsg.partitionExchangeMessage() && !(cacheMsg instanceof GridDhtPartitionDemandMessage) && !(cacheMsg instanceof GridDhtPartitionSupplyMessage))
+ TestDebugLog.addMessage("Message: " + cacheMsg);
+ */
+public class TestDebugLog {
+    /** */
+    private static final List<Object> msgs = Collections.synchronizedList(new ArrayList<>(1_000_000));
+
+    /** */
+    private static final SimpleDateFormat DEBUG_DATE_FMT = new SimpleDateFormat("HH:mm:ss,SSS");
+
+    private static final boolean disabled = false;
+
+    static class Message {
+        String thread = Thread.currentThread().getName();
+
+        String msg;
+
+        Object val;
+
+        long ts = U.currentTimeMillis();
+
+        public Message(String msg) {
+            this.msg = msg;
+        }
+
+        public Message(String msg, Object val) {
+            this.msg = msg;
+            this.val = val;
+        }
+
+        public String toString() {
+            return "Msg [thread=" + thread + ", time=" + DEBUG_DATE_FMT.format(new Date(ts)) +
+                ", msg=" + msg + ", val=" + val + ']';
+        }
+    }
+
+    static class TxMessage extends Message {
+        Object ver;
+        Object val;
+
+        public TxMessage(Object ver, Object val, String msg) {
+            super(msg);
+
+            this.ver = ver;
+            this.val = val;
+        }
+
+        public String toString() {
+            String s = "TxMsg [ver=" + ver +
+                ", msg=" + msg +
+                ", thread=" + thread +
+                ", val=" + val +
+                ", time=" + DEBUG_DATE_FMT.format(new Date(ts)) + ']';
+
+//            if (val instanceof Exception) {
+//                System.out.println("Error for " + s);
+//
+//                ((Exception) val).printStackTrace(System.out);
+//            }
+
+            return s;
+        }
+    }
+
+    static class PartMessage extends Message {
+        private final int cacheId;
+        private final int partId;
+        private Object val;
+
+        public PartMessage(int cacheId, int partId, Object val, String msg) {
+            super(msg);
+
+            this.cacheId = cacheId;
+            this.partId = partId;
+            this.val = val;
+            this.msg = msg;
+        }
+
+        boolean match(int cacheId, int partId) {
+            return this.cacheId == cacheId && this.partId == partId;
+        }
+
+        @Override public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            PartMessage partKey = (PartMessage) o;
+
+            if (cacheId != partKey.cacheId) return false;
+            return partId == partKey.partId;
+
+        }
+
+        @Override public int hashCode() {
+            int result = cacheId;
+            result = 31 * result + partId;
+            return result;
+        }
+
+        public String toString() {
+            return "PartMessage [partId=" + partId +
+                ", val=" + val +
+                ", msg=" + msg +
+                ", thread=" + thread +
+                ", time=" + DEBUG_DATE_FMT.format(new Date(ts)) +
+                ", cacheId=" + cacheId + ']';
+        }
+    }
+
+    static class EntryMessage extends Message {
+        Object key;
+        Object val;
+
+        public EntryMessage(Object key, Object val, String msg) {
+            super(msg);
+
+            this.key = key;
+            this.val = val;
+        }
+
+        public String toString() {
+            //return "EntryMsg [key=" + key + ", msg=" + msg + ", thread=" + thread + ", time=" + DEBUG_DATE_FMT.format(new Date(ts)) + ", val=" + val + ']';
+
+            String s = "EntryMsg [key=" + key +
+                ", thread=" + thread +
+                ", msg=" + msg +
+                ", val=" + val +
+                ", time=" + DEBUG_DATE_FMT.format(new Date(ts)) + ']';
+
+//            if (val instanceof Exception) {
+//                System.out.println("Error for " + s);
+//
+//                ((Exception) val).printStackTrace(System.out);
+//            }
+
+            return s;
+        }
+    }
+
+    static final boolean out = false;
+
+    public static void startRoutineMsg(TcpDiscoveryAbstractMessage msg, Marshaller marsh, String txt) {
+        if (msg instanceof TcpDiscoveryCustomEventMessage)
+            startRoutineMsg((TcpDiscoveryCustomEventMessage)msg, marsh, txt);
+    }
+
+    public static void startRoutineMsg(TcpDiscoveryCustomEventMessage msg, Marshaller marsh, String txt) {
+//        try {
+//            CustomMessageWrapper msg0 = (CustomMessageWrapper)msg.message(marsh);
+//
+//            DiscoveryCustomMessage custMsg = msg0.delegate();
+//
+//            if (custMsg instanceof StartRoutineDiscoveryMessage) {
+//                StartRoutineDiscoveryMessage startMsg = (StartRoutineDiscoveryMessage)custMsg;
+//
+//                addEntryMessage(startMsg.routineId(), "start msg", txt);
+//            }
+//            else if (custMsg instanceof StartRoutineAckDiscoveryMessage) {
+//                StartRoutineAckDiscoveryMessage startMsg = (StartRoutineAckDiscoveryMessage)custMsg;
+//
+//                addEntryMessage(startMsg.routineId(), "start ack msg", txt);
+//            }
+//        }
+//        catch (Throwable e) {
+//            e.printStackTrace();
+//
+//            System.exit(55);
+//        }
+    }
+
+    public static void addMessage(String msg) {
+//        if (disabled)
+//            return;
+//
+        msgs.add(new Message(msg));
+
+        if (out)
+            System.out.println(msg);
+    }
+
+    public static void addMessage(String msg, Object val) {
+        if (disabled)
+            return;
+
+        msgs.add(new Message(msg, val));
+
+        if (out)
+            System.out.println(msg);
+    }
+
+    public static void addKeyMessage(CacheObject key, Object val, String msg) {
+        addEntryMessage(key.value(null, false), val, msg);
+    }
+
+    public static void addQueueItemKeyMessage(KeyCacheObject key, Object val, String msg) {
+//        Object q = key.value(null, false);
+//
+//        if (q instanceof GridCacheQueueItemKey)
+//            addEntryMessage(((GridCacheQueueItemKey)q).index(), val, msg);
+//        else
+//            addEntryMessage(q, val, msg);
+    }
+
+    public static void addEntryMessage(Object key, Object val, String msg) {
+        if (disabled)
+            return;
+
+        assert key != null;
+
+        if (key instanceof CacheObject)
+            key = ((CacheObject) key).value(null, false);
+
+        EntryMessage msg0 = new EntryMessage(key, val, msg);
+
+        msgs.add(msg0);
+
+        if (out)
+            System.out.println(msg0.toString());
+    }
+
+    public static void printMessages(String fileName) {
+        List<Object> msgs0;
+
+        synchronized (msgs) {
+            msgs0 = new ArrayList<>(msgs);
+
+            // msgs.clear();
+        }
+
+        if (fileName != null) {
+            try {
+                FileOutputStream out = new FileOutputStream(fileName);
+
+                PrintWriter w = new PrintWriter(out);
+
+                for (Object msg : msgs0)
+                    w.println(msg.toString());
+
+                w.close();
+
+                out.close();
+            }
+            catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        else {
+            for (Object msg : msgs0)
+                System.out.println(msg);
+        }
+    }
+
+    public static void addPartMessage(int cacheId,
+                                      int partId,
+                                      Object val,
+                                      String msg) {
+        msgs.add(new PartMessage(cacheId, partId, val, msg));
+    }
+
+    public static void printKeyMessages(String fileName, Object key) {
+        assert key != null;
+
+        List<Object> msgs0;
+
+        synchronized (msgs) {
+            msgs0 = new ArrayList<>(msgs);
+
+            //msgs.clear();
+        }
+
+        if (fileName != null) {
+            try {
+                FileOutputStream out = new FileOutputStream(fileName);
+
+                PrintWriter w = new PrintWriter(out);
+
+                for (Object msg : msgs0) {
+                    if (msg instanceof EntryMessage && !((EntryMessage)msg).key.equals(key))
+                        continue;
+
+                    w.println(msg.toString());
+                }
+
+                w.close();
+
+                out.close();
+            }
+            catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        else {
+            for (Object msg : msgs0) {
+                if (msg instanceof EntryMessage && !((EntryMessage)msg).key.equals(key))
+                    continue;
+
+                System.out.println(msg);
+            }
+        }
+    }
+    public static void printKeyAndPartMessages(String fileName, Object key, int partId, int cacheId) {
+        //assert key != null;
+
+        List<Object> msgs0;
+
+        synchronized (msgs) {
+            msgs0 = new ArrayList<>(msgs);
+
+            //msgs.clear();
+        }
+
+        if (fileName != null) {
+            try {
+                FileOutputStream out = new FileOutputStream(fileName);
+
+                PrintWriter w = new PrintWriter(out);
+
+                for (Object msg : msgs0) {
+                    if (key != null) {
+                        if (msg instanceof EntryMessage && !((EntryMessage)msg).key.equals(key))
+                            continue;
+                    }
+
+                    if (msg instanceof PartMessage) {
+                        PartMessage pm = (PartMessage)msg;
+
+                        if (pm.cacheId != cacheId || pm.partId != partId)
+                            continue;
+                    }
+
+                    w.println(msg.toString());
+                }
+
+                w.close();
+
+                out.close();
+            }
+            catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        else {
+//            for (Object msg : msgs0) {
+//                if (msg instanceof EntryMessage && !((EntryMessage)msg).key.equals(key))
+//                    continue;
+//
+//                System.out.println(msg);
+//            }
+        }
+    }
+
+    public static void clear() {
+        msgs.clear();
+    }
+
+    public static void main(String[] args) {
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
index b48bbc7..9c95123 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
@@ -46,6 +46,7 @@ import org.apache.ignite.configuration.DeploymentMode;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.NearCacheConfiguration;
 import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.TestDebugLog;
 import org.apache.ignite.internal.util.typedef.CI1;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.PN;
@@ -436,6 +437,12 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
                             if (entry0 != null)
                                 info(" >>> " + entry);
                         }
+
+                        TestDebugLog.addEntryMessage(key, null, "absent key");
+
+                        TestDebugLog.printKeyMessages("test_debug.txt", key);
+
+                        System.exit(55);
                     }
 
                     info("");

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllTask.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllTask.java
index e728a0f..3c4b67f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllTask.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllTask.java
@@ -120,7 +120,8 @@ class GridCachePutAllTask extends ComputeTaskAdapter<Collection<Integer>, Void>
 
                             for (int i = 0; i < RETRIES; i++) {
                                 try {
-                                    cache.putAll(putMap);
+                                    for (Map.Entry<Integer, Integer> e : putMap.entrySet())
+                                        cache.put(e.getKey(), e.getValue());
 
                                     break;
                                 }
@@ -148,7 +149,8 @@ class GridCachePutAllTask extends ComputeTaskAdapter<Collection<Integer>, Void>
 
                     for (int i = 0; i < RETRIES; i++) {
                         try {
-                            cache.putAll(putMap);
+                            for (Map.Entry<Integer, Integer> e : putMap.entrySet())
+                                cache.put(e.getKey(), e.getValue());
 
                             break;
                         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAtomicPutAllFailoverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAtomicPutAllFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAtomicPutAllFailoverSelfTest.java
index 3f9fc5c..ded4e73 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAtomicPutAllFailoverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAtomicPutAllFailoverSelfTest.java
@@ -34,4 +34,8 @@ public class IgniteCacheAtomicPutAllFailoverSelfTest extends GridCachePutAllFail
     @Override public void testPutAllFailoverColocatedNearEnabledTwoBackupsOffheapTieredSwap(){
         fail("https://issues.apache.org/jira/browse/IGNITE-1584");
     }
+
+    public void testPutAllFailoverNearDisabledThreeBackups() throws Exception {
+        super.testPutAllFailoverNearDisabledThreeBackups();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b1992a92/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
index 4ac2cde..11f0428 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
@@ -37,17 +37,7 @@ public class IgniteCacheRestartTestSuite2 extends TestSuite {
     public static TestSuite suite() throws Exception {
         TestSuite suite = new TestSuite("Cache Restart Test Suite2");
 
-        suite.addTestSuite(IgniteCacheAtomicNodeRestartTest.class);
-        suite.addTestSuite(IgniteCacheAtomicReplicatedNodeRestartSelfTest.class);
-
         suite.addTestSuite(IgniteCacheAtomicPutAllFailoverSelfTest.class);
-        suite.addTestSuite(IgniteCachePutAllRestartTest.class);
-        suite.addTestSuite(GridCachePutAllFailoverSelfTest.class);
-
-        // TODO IGNITE-4705.
-        //suite.addTestSuite(IgniteBinaryMetadataUpdateNodeRestartTest.class);
-
-        suite.addTestSuite(IgniteCacheGetRestartTest.class);
 
         return suite;
     }


[2/4] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-4705-2' into ignite-4705-debug

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-4705-2' into ignite-4705-debug


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

Branch: refs/heads/ignite-4705-debug
Commit: 441e61e63838477387e2fd94c3cb85a1e15cf5d8
Parents: a53cfeb 512655b
Author: sboikov <sb...@gridgain.com>
Authored: Tue Mar 7 09:56:15 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Mar 7 09:56:15 2017 +0300

----------------------------------------------------------------------
 .../GridDhtAtomicAbstractUpdateFuture.java      | 13 ++++++----
 .../dht/atomic/GridDhtAtomicCache.java          |  7 +-----
 .../GridNearAtomicAbstractUpdateFuture.java     | 13 ++--------
 .../GridNearAtomicCheckUpdateRequest.java       |  1 +
 .../GridNearAtomicSingleUpdateFuture.java       |  6 +++++
 .../continuous/CacheContinuousQueryHandler.java |  2 +-
 .../IgniteCachePutRetryAbstractSelfTest.java    | 25 ++++++++++++++++----
 ...gniteCachePutRetryTransactionalSelfTest.java |  2 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java | 12 ++++------
 9 files changed, 47 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


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

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

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

http://git-wip-us.apache.org/repos/asf/ignite/blob/441e61e6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
----------------------------------------------------------------------