Repository: incubator-ignite Updated Branches: refs/heads/ignite-1175 [created] 171caab0a
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/171caab0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/171caab0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/171caab0 Branch: refs/heads/ignite-1175 Commit: 171caab0aa8d3b0551fddda1ad48f0b459a96293 Parents: d9acbd1 Author: Yakov Zhdanov <yzhda...@gridgain.com> Authored: Fri Aug 7 18:44:57 2015 +0300 Committer: agura <ag...@gridgain.com> Committed: Fri Aug 7 19:03:55 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheContext.java | 5 +++-- .../processors/cache/GridCacheMapEntry.java | 4 +++- ...cheDhtLocalPartitionAfterRemoveSelfTest.java | 21 +++++++++++++------- .../cache/GridCacheAbstractFullApiSelfTest.java | 16 +++++++++++---- ...heExpiredEntriesPreloadAbstractSelfTest.java | 3 ++- .../testsuites/IgniteCacheTestSuite2.java | 1 + 6 files changed, 35 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/171caab0/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..dbd44ab 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().isDrEnabled() || cache.context().store().isLocal())) || + cache.isDhtAtomic() || (cache.isNear() && cache.configuration().getAtomicityMode() == ATOMIC); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/171caab0/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/171caab0/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/171caab0/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/171caab0/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/171caab0/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));