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/08/11 19:36:10 UTC

[17/17] incubator-ignite git commit: ignite-1175 Entries are not removed from GridDhtLocalPartition after IgniteCache.remove

ignite-1175 Entries are not removed from GridDhtLocalPartition after IgniteCache.remove


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

Branch: refs/heads/ignite-1175
Commit: 5479e9128e223797a99b68b80d202f2f7a82a333
Parents: ae11e9b
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Fri Aug 7 18:44:57 2015 +0300
Committer: agura <ag...@gridgain.com>
Committed: Tue Aug 11 19:00:43 2015 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheContext.java      |  5 +++--
 .../processors/cache/GridCacheMapEntry.java     |  4 +++-
 ...cheDhtLocalPartitionAfterRemoveSelfTest.java | 21 +++++++++++++-------
 .../cache/GridCacheAbstractFullApiSelfTest.java | 16 +++++++++++----
 ...heExpiredEntriesPreloadAbstractSelfTest.java |  3 ++-
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java | 10 ++++++----
 .../testsuites/IgniteCacheTestSuite2.java       |  1 +
 7 files changed, 41 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 5f17746..6ac0bc1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -537,8 +537,9 @@ public class GridCacheContext<K, V> implements Externalizable {
      * @return {@code True} if entries should not be deleted from cache immediately.
      */
     public boolean deferredDelete(GridCacheAdapter<?, ?> cache) {
-        return cache.isDht() || cache.isDhtAtomic() || cache.isColocated() ||
-            (cache.isNear() && cache.configuration().getAtomicityMode() == ATOMIC);
+        return ((cache.isDht() || cache.isColocated()) &&
+            (cache.context().dr().receiveEnabled() || cache.context().store().isLocal())) ||
+            cache.isDhtAtomic() || (cache.isNear() && cache.configuration().getAtomicityMode() == ATOMIC);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/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 f85a18b..0995191 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
@@ -1230,7 +1230,9 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
         if (writeThrough)
             cctx.store().remove(tx, keyValue(false));
 
-        if (!cctx.deferredDelete()) {
+        if (cctx.deferredDelete() && !detached() && !isInternal())
+            cctx.onDeferredDelete(this, newVer);
+        else {
             boolean marked = false;
 
             synchronized (this) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java
index b04e41a..f04717d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java
@@ -27,6 +27,9 @@ import org.apache.ignite.testframework.junits.common.*;
  * Test for remove operation.
  */
 public class CacheDhtLocalPartitionAfterRemoveSelfTest extends GridCommonAbstractTest {
+    /** Grid count. */
+    private static final int GRID_CNT = 3;
+
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(gridName);
@@ -44,7 +47,7 @@ public class CacheDhtLocalPartitionAfterRemoveSelfTest extends GridCommonAbstrac
 
     /** {@inheritDoc} */
     @Override protected void beforeTestsStarted() throws Exception {
-        startGrids(1);
+        startGrids(GRID_CNT);
     }
 
     /** {@inheritDoc} */
@@ -66,15 +69,19 @@ public class CacheDhtLocalPartitionAfterRemoveSelfTest extends GridCommonAbstrac
 
         assertEquals(0, cache.size());
 
-        int size = 0;
+        for (int g = 0; g < GRID_CNT; g++) {
+            cache = grid(g).cache(null);
 
-        for (GridDhtLocalPartition p : dht(cache).topology().localPartitions()) {
-            int pSize = p.size();
+            int size = 0;
 
-            size += pSize;
-        }
+            for (GridDhtLocalPartition p : dht(cache).topology().localPartitions()) {
+                int pSize = p.size();
 
-        System.out.println("All size: " + size);
+                size += pSize;
+            }
+
+            assertEquals(0, size);
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git 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
index fb004bf..30060e9 100644
--- 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
@@ -2318,8 +2318,12 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
                                 cctx.cache().peekEx(key);
 
                             if (grid(idx).affinity(null).mapKeyToPrimaryAndBackups(key).contains(grid(idx).localNode())) {
-                                assertNotNull(entry);
-                                assertTrue(entry.deleted());
+                                if (cctx.deferredDelete()) {
+                                    assertNotNull(entry);
+                                    assertTrue(entry.deleted());
+                                }
+                                else
+                                    assertNull(entry);
                             }
                             else
                                 assertNull(entry);
@@ -3394,8 +3398,12 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
         // Ensure that old TTL and expire time are not longer "visible".
         entry = internalCache.peekEx(key);
 
-        assertEquals(0, entry.ttl());
-        assertEquals(0, entry.expireTime());
+        if (internalCache.context().deferredDelete()) {
+            assertEquals(0, entry.ttl());
+            assertEquals(0, entry.expireTime());
+        }
+        else
+            assertNull(entry);
 
         // Ensure that next update will not pick old expire time.
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheExpiredEntriesPreloadAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheExpiredEntriesPreloadAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheExpiredEntriesPreloadAbstractSelfTest.java
index ccc9b64..d8ce9cf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheExpiredEntriesPreloadAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheExpiredEntriesPreloadAbstractSelfTest.java
@@ -105,7 +105,8 @@ public abstract class GridCacheExpiredEntriesPreloadAbstractSelfTest extends Gri
 
         Collection<Event> evts = g1.events().localQuery(F.<Event>alwaysTrue(), EVT_CACHE_REBALANCE_OBJECT_LOADED);
 
-        assertEquals("Expected all entries are preloaded.", KEYS_NUM, evts.size());
+        assertEquals("Expected all entries are preloaded.", cache1.context().deferredDelete() ? KEYS_NUM : 0,
+            evts.size());
 
         boolean rmv = GridTestUtils.waitForCondition(new PAX() {
             @Override public boolean applyx() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
index f30ea71..80a2f76 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
@@ -412,10 +412,12 @@ public class GridCacheNearOnlyMultiNodeFullApiSelfTest extends GridCachePartitio
 
             GridCacheEntryEx entry = dht.peekEx(key);
 
-            assert entry != null;
-
-            assertEquals(0, entry.ttl());
-            assertEquals(0, entry.expireTime());
+            if (dht.context().deferredDelete()) {
+                assertEquals(0, entry.ttl());
+                assertEquals(0, entry.expireTime());
+            }
+            else
+                assertNull(entry);
         }
 
         // Ensure that next update will not pick old expire time.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5479e912/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
index 67e46f0..2efdb82 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
@@ -98,6 +98,7 @@ public class IgniteCacheTestSuite2 extends TestSuite {
         suite.addTest(new TestSuite(GridCacheDhtPreloadPutGetSelfTest.class));
         suite.addTest(new TestSuite(GridCacheDhtPreloadDisabledSelfTest.class));
         suite.addTest(new TestSuite(GridCacheDhtPreloadMultiThreadedSelfTest.class));
+        suite.addTest(new TestSuite(CacheDhtLocalPartitionAfterRemoveSelfTest.class));
         suite.addTest(new TestSuite(GridCacheColocatedPreloadRestartSelfTest.class));
         suite.addTest(new TestSuite(GridCacheNearPreloadRestartSelfTest.class));
         suite.addTest(new TestSuite(GridCacheDhtPreloadStartStopSelfTest.class));