#ignite-286:wip.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/91d37635 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/91d37635 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/91d37635 Branch: refs/heads/ignite-286 Commit: 91d3763555581a92c4d40d5454e80416da92d5a9 Parents: d396fae Author: ivasilinets <ivasilin...@gridgain.com> Authored: Tue Apr 28 14:19:09 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Tue Apr 28 14:19:09 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheAdapter.java | 7 +- .../cache/GridCacheAbstractFullApiSelfTest.java | 120 +++++++++++++++++++ ...edOffHeapTieredMultiNodeFullApiSelfTest.java | 48 +++++++- 3 files changed, 171 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91d37635/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 110da18..388f596 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -827,7 +827,12 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V */ public GridCacheEntryEx entryEx(KeyCacheObject key, AffinityTopologyVersion topVer) { GridCacheEntryEx e = entry0(key, topVer, true, false); - + try { + e.unswap(); + } + catch (IgniteCheckedException e1) { + e1.printStackTrace(); + } assert e != null; return e; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91d37635/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 70d8f9c..31c4534 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 @@ -4310,6 +4310,126 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract /** * @throws Exception If failed. */ + public void testPutRemoveWithSkipStore() throws Exception { + IgniteCache<String, Integer> cache = grid(0).cache(null); + IgniteCache<String, Integer> cacheSkipStore = cache.withSkipStore(); + + String key = "key_" + 4; + + cache.put(key, 4); + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("!Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("!On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("!Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("!Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("!Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("!Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("!Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("1Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("1On heap " + grid(i).cache(null).localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("1Off heap " + grid(i).cache(null).localPeek(key, OFFHEAP)); + System.out.println("1Swap " + grid(i).cache(null).localPeek(key, CachePeekMode.SWAP)); + System.out.println("1Near " + grid(i).cache(null).localPeek(key, CachePeekMode.NEAR)); + System.out.println("1Primary " + grid(i).cache(null).localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("1Backup " + grid(i).cache(null).localPeek(key, CachePeekMode.BACKUP)); + } + + + assertEquals(4, cacheSkipStore.get(key).intValue()); + assertEquals(4, cache.get(key).intValue()); + assertEquals(4, map.get(key)); + cacheSkipStore.remove(key); + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("!!Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("!!On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("!!Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("!!Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("!!Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("!!Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("!!Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + assertNull(cacheSkipStore.get(key)); + assertEquals(4, cache.get(key).intValue()); + assertEquals(4, map.get(key)); + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("3Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("3On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("3Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("3Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("3Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("3Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("3Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + cacheSkipStore.put(key, 5); + for (int i = 0; i < gridCount(); ++i) { + System.out.println("!!!Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("!!!On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("!!!Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("!!!Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("!!!Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("!!!Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("!!!Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + assertEquals(5, cacheSkipStore.get(key).intValue()); + assertEquals(5, cache.get(key).intValue()); + assertEquals(4, map.get(key)); + + map.put(key, 6); + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("4Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("4On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("4Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("4Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("4Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("4Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("4Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + + assertTrue(cacheSkipStore.remove(key)); + + for (int i = 0; i < gridCount(); ++i) { + System.out.println("Grid " + i + + " is primary " + grid(0).affinity(null).isPrimary(grid(i).localNode(), key) + + " is backup " + grid(0).affinity(null).isBackup(grid(i).localNode(), key)); + System.out.println("On heap " + grid(i).cache(null).withSkipStore().localPeek(key, ONHEAP_PEEK_MODES)); + System.out.println("Off heap " + grid(i).cache(null).withSkipStore().localPeek(key, OFFHEAP)); + System.out.println("Swap " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + System.out.println("Near " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + System.out.println("Primary " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + System.out.println("Backup " + grid(i).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + assertNull(cacheSkipStore.get(key)); + assertEquals(6, cache.get(key).intValue()); + assertNotNull(map.get(key)); + } + + /** + * @throws Exception If failed. + */ public void testWithSkipStore() throws Exception { IgniteCache<String, Integer> cache = grid(0).cache(null); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91d37635/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest.java index cce39aa..1b6dd80 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest.java @@ -17,7 +17,9 @@ package org.apache.ignite.internal.processors.cache.distributed.near; +import org.apache.ignite.*; import org.apache.ignite.cache.*; +import org.apache.ignite.configuration.*; import static org.apache.ignite.cache.CacheMemoryMode.*; @@ -30,13 +32,53 @@ public class GridCachePartitionedOffHeapTieredMultiNodeFullApiSelfTest extends G return 4; } + /** {@inheritDoc} *//* + @Override protected NearCacheConfiguration nearConfiguration() { + return null; + }*/ + /** {@inheritDoc} */ @Override protected CacheMemoryMode memoryMode() { return OFFHEAP_TIERED; } - /** {@inheritDoc} */ - @Override protected boolean nearEnabled() { - return false; + /** + * @throws Exception If failed. + */ + public void testPut() throws Exception { + IgniteCache cache = grid(0).cache(null); + + for (int i = 4; i < 5; ++i) { + String key = "key_" + 1; + System.out.println("key = " + key); + + cache.put(key, i); + + for (int j = 0; j < gridCount(); ++j) { + boolean isPrimary = grid(0).affinity(null).isPrimary(grid(j).localNode(), key); + + boolean isBackup = grid(0).affinity(null).isBackup(grid(j).localNode(), key); + + System.out.println("Grid " + j + ", primary=" + isPrimary + ", backup=" + isBackup); + + if (isPrimary) { + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.ONHEAP)); + assertNotNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.OFFHEAP)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + assertNotNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + + if (isBackup) { + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.ONHEAP)); + assertNotNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.OFFHEAP)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.SWAP)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.NEAR)); + assertNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.PRIMARY)); + assertNotNull(grid(j).cache(null).withSkipStore().localPeek(key, CachePeekMode.BACKUP)); + } + } + } } }