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 2015/05/27 16:49:17 UTC

[26/38] incubator-ignite git commit: # ignite-23

# ignite-23


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

Branch: refs/heads/ignite-709_2
Commit: 8980b615587b6837f6bd3baab2ac13c07f3f09e0
Parents: 00eadd6
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 25 16:26:53 2015 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 25 17:04:08 2015 +0300

----------------------------------------------------------------------
 .../cache/GridCacheSharedContext.java           |  1 -
 .../dht/atomic/GridNearAtomicUpdateFuture.java  | 12 ++++--
 .../colocated/GridDhtColocatedLockFuture.java   | 16 ++------
 .../GridDhtPartitionsExchangeFuture.java        |  4 ++
 ...niteCacheClientNodeChangingTopologyTest.java | 12 +++++-
 ...teCacheClientNodePartitionsExchangeTest.java | 42 ++++++++++++++++++--
 6 files changed, 63 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
index 3d70db7..4c08beb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
@@ -415,7 +415,6 @@ public class GridCacheSharedContext<K, V> {
         GridCompoundFuture f = new GridCompoundFuture();
 
         f.add(mvcc().finishExplicitLocks(topVer));
-        f.add(mvcc().finishLocks(topVer));
         f.add(tm().finishTxs(topVer));
         f.add(mvcc().finishAtomicUpdates(topVer));
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index 64a4882..55cc027 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -128,6 +128,12 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
     /** Fast map flag. */
     private final boolean fastMap;
 
+    /** */
+    private boolean fastMapRemap;
+
+    /** */
+    private GridCacheVersion updVer;
+
     /** Near cache flag. */
     private final boolean nearEnabled;
 
@@ -143,9 +149,6 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
     /** Skip store flag. */
     private final boolean skipStore;
 
-    /** */
-    private boolean fastMapRemap;
-
     /**
      * @param cctx Cache context.
      * @param cache Cache instance.
@@ -537,7 +540,8 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
         CacheConfiguration ccfg = cctx.config();
 
         // Assign version on near node in CLOCK ordering mode even if fastMap is false.
-        GridCacheVersion updVer = ccfg.getAtomicWriteOrderMode() == CLOCK ? cctx.versions().next(topVer) : null;
+        if (updVer == null)
+            updVer = ccfg.getAtomicWriteOrderMode() == CLOCK ? cctx.versions().next(topVer) : null;
 
         if (updVer != null && log.isDebugEnabled())
             log.debug("Assigned fast-map version for update on near node: " + updVer);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index cc8f064..5a4c91d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -341,25 +341,12 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
                 else if (log.isDebugEnabled())
                     log.debug("Transaction was not marked rollback-only while locks were not acquired: " + tx);
             }
-
-            for (KeyCacheObject key : GridDhtColocatedLockFuture.this.keys)
-                cctx.mvcc().removeExplicitLock(threadId, key, lockVer);
         }
 
         cctx.mvcc().recheckPendingLocks();
     }
 
     /**
-     *
-     * @param dist {@code True} if need to distribute lock release.
-     */
-    private void onFailed(boolean dist) {
-        undoLocks(dist, true);
-
-        complete(false);
-    }
-
-    /**
      * @param success Success flag.
      */
     public void complete(boolean success) {
@@ -1376,6 +1363,9 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
         private void remap() {
             undoLocks(false, false);
 
+            for (KeyCacheObject key : GridDhtColocatedLockFuture.this.keys)
+                cctx.mvcc().removeExplicitLock(threadId, key, lockVer);
+
             mapOnTopology(true);
 
             onDone(true);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git 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
index af7fa5c..a4cdfcd 100644
--- 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
@@ -507,6 +507,8 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
                         if (exchId.isLeft())
                             cctx.mvcc().removeExplicitNodeLocks(exchId.nodeId(), exchId.topologyVersion());
 
+                        cctx.mvcc().finishLocks(exchId.topologyVersion()).get();
+
                         onDone(exchId.topologyVersion());
 
                         skipPreload = true;
@@ -692,6 +694,8 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
                 if (exchId.isLeft())
                     cctx.mvcc().removeExplicitNodeLocks(exchId.nodeId(), exchId.topologyVersion());
 
+                cctx.mvcc().finishLocks(exchId.topologyVersion()).get();
+
                 for (GridCacheContext cacheCtx : cctx.cacheContexts()) {
                     if (cacheCtx.isLocal())
                         continue;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
index 5a5a648..1de78aa 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
@@ -841,14 +841,22 @@ public class IgniteCacheClientNodeChangingTopologyTest extends GridCommonAbstrac
 
         IgniteCache<Integer, Integer> cache2 = ignite2.cache(null);
 
-        Lock lock2 = cache2.lock(0);
+        final Integer key = 0;
+
+        Lock lock2 = cache2.lock(key);
 
         lock2.lock();
 
         ignite2.close();
 
+        IgniteCache<Integer, Integer> cache0 = ignite0.cache(null);
+
+        assertFalse(cache0.isLocalLocked(key, false));
+
         IgniteCache<Integer, Integer> cache1 = ignite1.cache(null);
 
+        assertFalse(cache1.isLocalLocked(key, false));
+
         Lock lock1 = cache1.lock(0);
 
         assertTrue(lock1.tryLock(5000, TimeUnit.MILLISECONDS));
@@ -1163,7 +1171,7 @@ public class IgniteCacheClientNodeChangingTopologyTest extends GridCommonAbstrac
                 }));
             }
 
-            long stopTime = System.currentTimeMillis() + 2 * 60_000;
+            long stopTime = System.currentTimeMillis() + 60_000;
 
             while (System.currentTimeMillis() < stopTime) {
                 int idx = ThreadLocalRandom.current().nextInt(0, SRV_CNT);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8980b615/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodePartitionsExchangeTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodePartitionsExchangeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodePartitionsExchangeTest.java
index d680d26..726ff22 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodePartitionsExchangeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodePartitionsExchangeTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.events.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.managers.communication.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.processors.affinity.*;
 import org.apache.ignite.internal.processors.cache.*;
 import org.apache.ignite.internal.processors.cache.distributed.dht.*;
@@ -428,14 +429,31 @@ public class IgniteCacheClientNodePartitionsExchangeTest extends GridCommonAbstr
      * @throws Exception If failed.
      */
     public void testClientOnlyCacheStart() throws Exception {
+        clientOnlyCacheStart(false);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testNearOnlyCacheStart() throws Exception {
+        clientOnlyCacheStart(true);
+    }
+
+    /**
+     * @param nearCache If {@code true} creates near cache on client.
+     * @throws Exception If failed.
+     */
+    public void clientOnlyCacheStart(boolean nearCache) throws Exception {
         Ignite ignite0 = startGrid(0);
         Ignite ignite1 = startGrid(1);
 
         waitForTopologyUpdate(2, 2);
 
+        final String CACHE_NAME = "cache1";
+
         CacheConfiguration ccfg = new CacheConfiguration();
 
-        ccfg.setName("cache1");
+        ccfg.setName(CACHE_NAME);
 
         ignite0.createCache(ccfg);
 
@@ -453,11 +471,17 @@ public class IgniteCacheClientNodePartitionsExchangeTest extends GridCommonAbstr
         spi1.reset();
         spi2.reset();
 
-        assertNull(((IgniteKernal) ignite2).context().cache().context().cache().internalCache("cache1"));
+        assertNull(((IgniteKernal)ignite2).context().cache().context().cache().internalCache("cache1"));
+
+        if (nearCache)
+            ignite2.getOrCreateNearCache(CACHE_NAME, new NearCacheConfiguration<>());
+        else
+            ignite2.cache(CACHE_NAME);
 
-        ignite2.cache("cache1");
+        GridCacheAdapter cache = ((IgniteKernal)ignite2).context().cache().context().cache().internalCache("cache1");
 
-        assertNotNull(((IgniteKernal) ignite2).context().cache().context().cache().internalCache("cache1"));
+        assertNotNull(cache);
+        assertEquals(nearCache, cache.context().isNear());
 
         assertEquals(0, spi0.partitionsSingleMessages());
         assertEquals(0, spi0.partitionsFullMessages());
@@ -465,6 +489,16 @@ public class IgniteCacheClientNodePartitionsExchangeTest extends GridCommonAbstr
         assertEquals(0, spi1.partitionsFullMessages());
         assertEquals(0, spi2.partitionsSingleMessages());
         assertEquals(0, spi2.partitionsFullMessages());
+
+        ClusterNode clientNode = ((IgniteKernal)ignite2).localNode();
+
+        for (Ignite ignite : Ignition.allGrids()) {
+            GridDiscoveryManager disco = ((IgniteKernal)ignite).context().discovery();
+
+            assertTrue(disco.cacheNode(clientNode, CACHE_NAME));
+            assertFalse(disco.cacheAffinityNode(clientNode, CACHE_NAME));
+            assertEquals(nearCache, disco.cacheNearNode(clientNode, CACHE_NAME));
+        }
     }
 
     /**