Ignite - Fixing cache tests.

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

Branch: refs/heads/master
Commit: 3ec08ec101f7ee8f0f486a686f21a42aef611bc6
Parents: 9f90d7d
Author: Alexey Goncharuk <agoncha...@gridgain.com>
Authored: Mon Dec 8 18:09:33 2014 -0800
Committer: Alexey Goncharuk <agoncha...@gridgain.com>
Committed: Mon Dec 8 18:09:33 2014 -0800

----------------------------------------------------------------------
 .../processors/cache/GridCacheMvccManager.java  | 31 +++++++++++++++-----
 .../processors/cache/GridCacheTxManager.java    |  3 ++
 .../GridCacheNodeFailureAbstractTest.java       | 10 +++++--
 .../bamboo/GridDataGridTestSuite.java           | 14 ++++-----
 4 files changed, 41 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3ec08ec1/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMvccManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMvccManager.java
 
b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMvccManager.java
index bedc33f..41c1c0c 100644
--- 
a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMvccManager.java
+++ 
b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMvccManager.java
@@ -63,6 +63,10 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
     @GridToStringExclude
     private final ConcurrentMap<GridCacheTxKey<K>, 
GridDistributedCacheEntry<K, V>> locked = newMap();
 
+    /** Near locked keys. Need separate map because mvcc manager is shared 
between caches. */
+    @GridToStringExclude
+    private final ConcurrentMap<GridCacheTxKey<K>, 
GridDistributedCacheEntry<K, V>> nearLocked = newMap();
+
     /** Active futures mapped by version ID. */
     @GridToStringExclude
     private final ConcurrentMap<GridCacheVersion, 
Collection<GridCacheFuture<?>>> futs = newMap();
@@ -135,12 +139,18 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
 
         /** {@inheritDoc} */
         @Override public void onLocked(GridDistributedCacheEntry<K, V> entry) {
-            locked.put(entry.txKey(), entry);
+            if (entry.isNear())
+                nearLocked.put(entry.txKey(), entry);
+            else
+                locked.put(entry.txKey(), entry);
         }
 
         /** {@inheritDoc} */
         @Override public void onFreed(GridDistributedCacheEntry<K, V> entry) {
-            locked.remove(entry.txKey());
+            if (entry.isNear())
+                nearLocked.remove(entry.txKey());
+            else
+                locked.remove(entry.txKey());
         }
     };
 
@@ -155,7 +165,7 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
             if (log.isDebugEnabled())
                 log.debug("Processing node left [nodeId=" + 
discoEvt.eventNode().id() + "]");
 
-            for (GridDistributedCacheEntry<K, V> entry : locked.values()) {
+            for (GridDistributedCacheEntry<K, V> entry : locked()) {
                 try {
                     entry.removeExplicitNodeLocks(discoEvt.eventNode().id());
                 }
@@ -508,6 +518,13 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
     }
 
     /**
+     * @return Collection of all locked entries.
+     */
+    private Collection<GridDistributedCacheEntry<K, V>> locked() {
+        return F.concat(false, locked.values(), nearLocked.values());
+    }
+
+    /**
      * This method has poor performance, so use with care. It is currently 
only used by {@code DGC}.
      *
      * @return Remote candidates.
@@ -515,7 +532,7 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
     public Collection<GridCacheMvccCandidate<K>> remoteCandidates() {
         Collection<GridCacheMvccCandidate<K>> rmtCands = new LinkedList<>();
 
-        for (GridDistributedCacheEntry<K, V> entry : locked.values()) {
+        for (GridDistributedCacheEntry<K, V> entry : locked()) {
             rmtCands.addAll(entry.remoteMvccSnapshot());
         }
 
@@ -530,7 +547,7 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
     public Collection<GridCacheMvccCandidate<K>> localCandidates() {
         Collection<GridCacheMvccCandidate<K>> locCands = new LinkedList<>();
 
-        for (GridDistributedCacheEntry<K, V> entry : locked.values()) {
+        for (GridDistributedCacheEntry<K, V> entry : locked()) {
             try {
                 locCands.addAll(entry.localCandidates());
             }
@@ -955,8 +972,8 @@ public class GridCacheMvccManager<K, V> extends 
GridCacheSharedManagerAdapter<K,
 
         final FinishLockFuture finishFut = new FinishLockFuture(
             keyFilter == null ?
-                locked.values() :
-                F.view(locked.values(),
+                locked() :
+                F.view(locked(),
                     new P1<GridDistributedCacheEntry<K, V>>() {
                         @Override public boolean 
apply(GridDistributedCacheEntry<K, V> e) {
                             return F.isAll(e.key(), keyFilter);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3ec08ec1/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxManager.java
 
b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxManager.java
index da0deed..9bd8a7a 100644
--- 
a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxManager.java
+++ 
b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxManager.java
@@ -1398,6 +1398,9 @@ public class GridCacheTxManager<K, V> extends 
GridCacheSharedManagerAdapter<K, V
         if (owner != null) {
             GridCacheTxAdapter<K, V> tx = tx(owner.version());
 
+            if (tx == null)
+                tx = nearTx(owner.version());
+
             if (tx != null) {
                 if (!tx.local()) {
                     if (log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3ec08ec1/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheNodeFailureAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheNodeFailureAbstractTest.java
 
b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheNodeFailureAbstractTest.java
index 483e0c6..270d86d 100644
--- 
a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheNodeFailureAbstractTest.java
+++ 
b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheNodeFailureAbstractTest.java
@@ -226,7 +226,8 @@ public abstract class GridCacheNodeFailureAbstractTest 
extends GridCommonAbstrac
 
         info("Grid will be stopped: " + idx);
 
-        info("Primary node for key [id=" + grid(idx).mapKeyToNode(null, KEY) + 
", key=" + KEY + ']');
+        info("Nodes for key [id=" + 
grid(idx).cache(null).affinity().mapKeyToPrimaryAndBackups(KEY) +
+            ", key=" + KEY + ']');
 
         GridCache<Integer, String> cache = cache(idx);
 
@@ -267,13 +268,16 @@ public abstract class GridCacheNodeFailureAbstractTest 
extends GridCommonAbstrac
         for (int i = 0; !locked && i < 3; i++) {
             locked = checkCache.lock(KEY, -1);
 
-            if (!locked)
+            if (!locked) {
+                info("Still not locked...");
+
                 U.sleep(1500);
+            }
             else
                 break;
         }
 
-        assert locked;
+        assert locked : "Failed to lock entry: " + e;
 
         checkCache.unlockAll(F.asList(KEY));
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3ec08ec1/modules/core/src/test/java/org/gridgain/testsuites/bamboo/GridDataGridTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/gridgain/testsuites/bamboo/GridDataGridTestSuite.java
 
b/modules/core/src/test/java/org/gridgain/testsuites/bamboo/GridDataGridTestSuite.java
index 841f116..7e231d4 100644
--- 
a/modules/core/src/test/java/org/gridgain/testsuites/bamboo/GridDataGridTestSuite.java
+++ 
b/modules/core/src/test/java/org/gridgain/testsuites/bamboo/GridDataGridTestSuite.java
@@ -134,7 +134,7 @@ public class GridDataGridTestSuite extends TestSuite {
         suite.addTest(new 
TestSuite(GridCachePartitionedBasicOpSelfTest.class));
 //        suite.addTest(new 
TestSuite(GridCachePartitionedBasicStoreNoBatchSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedBasicStoreSelfTest.class));
-//        suite.addTest(new 
TestSuite(GridCachePartitionedGetAndTransformStoreSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCachePartitionedGetAndTransformStoreSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedAtomicGetAndTransformStoreSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedBasicStoreMultiNodeSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedNearDisabledBasicStoreMultiNodeSelfTest.class));
@@ -143,8 +143,8 @@ public class GridDataGridTestSuite extends TestSuite {
         suite.addTest(new 
TestSuite(GridCachePartitionedMultiNodeLockSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedMultiNodeSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedMultiThreadedPutGetSelfTest.class));
-//        suite.addTest(new 
TestSuite(GridCachePartitionedNodeFailureSelfTest.class));
-//        suite.addTest(new 
TestSuite(GridCachePartitionedExplicitLockNodeFailureSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCachePartitionedNodeFailureSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCachePartitionedExplicitLockNodeFailureSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedRefreshAheadSelfTest.class));
         suite.addTest(new 
TestSuite(GridCachePartitionedTxSingleThreadedSelfTest.class));
         suite.addTest(new 
TestSuite(GridCacheColocatedTxSingleThreadedSelfTest.class));
@@ -207,7 +207,7 @@ public class GridDataGridTestSuite extends TestSuite {
         
suite.addTestSuite(GridCacheValueConsistencyAtomicNearEnabledSelfTest.class);
         
suite.addTestSuite(GridCacheValueConsistencyAtomicPrimaryWriteOrderNearEnabledSelfTest.class);
         
suite.addTestSuite(GridCacheValueConsistencyTransactionalSelfTest.class);
-//        
suite.addTestSuite(GridCacheValueConsistencyTransactionalNearEnabledSelfTest.class);
+        
suite.addTestSuite(GridCacheValueConsistencyTransactionalNearEnabledSelfTest.class);
         suite.addTestSuite(GridCacheValueBytesPreloadingSelfTest.class);
 
         // Replicated cache.
@@ -267,9 +267,9 @@ public class GridDataGridTestSuite extends TestSuite {
         suite.addTest(GridCacheNearOnlySelfTestSuite.suite());
 
         // Test cache with daemon nodes.
-//        suite.addTestSuite(GridCacheDaemonNodeLocalSelfTest.class);
-//        suite.addTestSuite(GridCacheDaemonNodePartitionedSelfTest.class);
-//        suite.addTestSuite(GridCacheDaemonNodeReplicatedSelfTest.class);
+        suite.addTestSuite(GridCacheDaemonNodeLocalSelfTest.class);
+        suite.addTestSuite(GridCacheDaemonNodePartitionedSelfTest.class);
+        suite.addTestSuite(GridCacheDaemonNodeReplicatedSelfTest.class);
 
         // Write-behind.
         suite.addTest(GridCacheWriteBehindTestSuite.suite());

Reply via email to