# ignite-51
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1b54b7f4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1b54b7f4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1b54b7f4 Branch: refs/heads/ignite-368 Commit: 1b54b7f452c3bcd600319affc775a891ab68f6a8 Parents: 7719749 Author: sboikov <sboi...@gridgain.com> Authored: Tue Mar 10 13:16:33 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Tue Mar 10 14:22:50 2015 +0300 ---------------------------------------------------------------------- .../internal/processors/cache/CacheObject.java | 6 ++ .../processors/cache/CacheObjectAdapter.java | 6 -- .../cache/CacheObjectByteArrayImpl.java | 2 +- .../processors/cache/GridCacheContext.java | 2 +- .../processors/cache/GridCacheMapEntry.java | 4 +- .../processors/cache/GridCacheSwapManager.java | 4 +- .../IgniteCacheObjectProcessorImpl.java | 7 +- .../cache/GridCacheAbstractFullApiSelfTest.java | 87 -------------------- .../GridCacheOnCopyFlagAbstractSelfTest.java | 85 +++++++++++++++++++ 9 files changed, 100 insertions(+), 103 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java index 6db4c84..2f77e86 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java @@ -25,6 +25,12 @@ import org.jetbrains.annotations.*; * */ public interface CacheObject extends Message { + /** */ + public static final byte TYPE_REGULAR = 1; + + /** */ + public static final byte TYPE_BYTE_ARR = 2; + /** * @param ctx Context. * @param cpy If {@code true} need to copy value. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java index 923fd6b..173483d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java @@ -30,12 +30,6 @@ import java.nio.*; */ public abstract class CacheObjectAdapter implements CacheObject, Externalizable { /** */ - public static final byte TYPE_REGULAR = 1; - - /** */ - public static final byte TYPE_BYTE_ARR = 2; - - /** */ @GridToStringInclude @GridDirectTransient protected Object val; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java index 7f92483..333f6dc 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java @@ -69,7 +69,7 @@ public class CacheObjectByteArrayImpl implements CacheObject, Externalizable { /** {@inheritDoc} */ @Override public byte type() { - return CacheObjectAdapter.TYPE_BYTE_ARR; + return TYPE_BYTE_ARR; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/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 51098b2..3d9d8aa 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 @@ -1785,7 +1785,7 @@ public class GridCacheContext<K, V> implements Externalizable { @Nullable public CacheObject unswapCacheObject(byte type, byte[] bytes, @Nullable IgniteUuid clsLdrId) throws IgniteCheckedException { - if (ctx.config().isPeerClassLoadingEnabled() && type != CacheObjectAdapter.TYPE_BYTE_ARR) { + if (ctx.config().isPeerClassLoadingEnabled() && type != CacheObject.TYPE_BYTE_ARR) { ClassLoader ldr = clsLdrId != null ? deploy().getClassLoader(clsLdrId) : deploy().localLoader(); if (ldr == null) http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/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 565d8ec..cd02ef2 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 @@ -212,7 +212,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { if (cctx.kernalContext().config().isPeerClassLoadingEnabled()) { Object val0 = null; - if (val != null && val.type() != CacheObjectAdapter.TYPE_BYTE_ARR) { + if (val != null && val.type() != CacheObject.TYPE_BYTE_ARR) { val0 = cctx.cacheObjects().unmarshal(cctx.cacheObjectContext(), val.valueBytes(cctx.cacheObjectContext()), cctx.deploy().globalLoader()); @@ -265,7 +265,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { if (valBytes == null) return 0; - return valBytes.get1().length - (((valBytes.get2() == CacheObjectAdapter.TYPE_BYTE_ARR) ? 0 : 6)); + return valBytes.get1().length - (((valBytes.get2() == CacheObject.TYPE_BYTE_ARR) ? 0 : 6)); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java index b572ad9..91f9d23 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java @@ -1104,7 +1104,7 @@ public class GridCacheSwapManager extends GridCacheManagerAdapter { cctx.deploy().globalLoader()); if (cctx.events().isRecordable(EVT_CACHE_OBJECT_SWAPPED)) - cctx.events().addEvent(part, key, cctx.nodeId(), (IgniteUuid)null, null, + cctx.events().addEvent(part, key, cctx.nodeId(), (IgniteUuid) null, null, EVT_CACHE_OBJECT_SWAPPED, null, false, null, true, null, null, null); } @@ -1731,7 +1731,7 @@ public class GridCacheSwapManager extends GridCacheManagerAdapter { else { if (valLdrId == null && swapEntry.value() == null && - swapEntry.type() != CacheObjectAdapter.TYPE_BYTE_ARR) { + swapEntry.type() != CacheObject.TYPE_BYTE_ARR) { // We need value here only for classloading purposes. Object val = cctx.cacheObjects().unmarshal(cctx.cacheObjectContext(), swapEntry.valueBytes(), http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java index 8f9ce16..c05d343 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java @@ -24,7 +24,6 @@ import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; import org.apache.ignite.internal.processors.*; import org.apache.ignite.internal.processors.cache.*; -import org.apache.ignite.internal.processors.cacheobject.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.internal.util.typedef.*; import org.apache.ignite.internal.util.typedef.internal.*; @@ -158,7 +157,7 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme if (ctx.kernalContext().config().isPeerClassLoadingEnabled() && ctx.offheapTiered() && - type != CacheObjectAdapter.TYPE_BYTE_ARR) { + type != CacheObject.TYPE_BYTE_ARR) { IgniteUuid valClsLdrId = U.readGridUuid(valPtr + 5 + size); ClassLoader ldr = @@ -173,10 +172,10 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme /** {@inheritDoc} */ @Override public CacheObject toCacheObject(CacheObjectContext ctx, byte type, byte[] bytes) { switch (type) { - case CacheObjectAdapter.TYPE_BYTE_ARR: + case CacheObject.TYPE_BYTE_ARR: return new CacheObjectByteArrayImpl(bytes); - case CacheObjectAdapter.TYPE_REGULAR: + case CacheObject.TYPE_REGULAR: return new CacheObjectImpl(null, bytes); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/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 28b2b59..42dc850 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 @@ -3929,93 +3929,6 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract } /** - * - */ - public void _testCopyOnGet() { - IgniteCache<Integer, TestMutableObj> mutObjCache = ignite(0).jcache(null); - IgniteCache<Integer, TestImmutableObj> immObjCache = ignite(0).jcache(null); - - CacheConfiguration cfg = mutObjCache.getConfiguration(CacheConfiguration.class); - - boolean cpyOnGet = cfg.isCopyOnGet(); - - CacheAffinity<Integer> aff = ignite(0).affinity(null); - - boolean near = cfg.getDistributionMode() == CacheDistributionMode.NEAR_PARTITIONED || - cfg.getDistributionMode() == CacheDistributionMode.NEAR_ONLY; - - ClusterNode locNode = ignite(0).cluster().localNode(); - - for (int i = 0; i < 100; i++) { - boolean primary = aff.isPrimary(locNode, i); - boolean backup = aff.isBackup(locNode, i); - boolean loc = near || primary || backup; - - TestMutableObj putObj0 = new TestMutableObj(i); - - mutObjCache.put(i, putObj0); - - TestMutableObj getObj0 = mutObjCache.get(i); - - assertEquals(i, getObj0.val); - - if (!cpyOnGet && loc) - assertSame(putObj0, getObj0); - else - assertNotSame(putObj0, getObj0); - - TestImmutableObj putObj1 = new TestImmutableObj(i); - - immObjCache.put(i, putObj1); - - TestImmutableObj getObj1 = immObjCache.get(i); - - assertEquals(i, getObj1.val); - - if (loc && !offHeapValues()) - assertSame("Same expected [key=" + i + ", primary=" + primary + ", backup=" + backup + ']', - putObj1, - getObj1); - else - assertNotSame( - "Not same expected [key=" + i + ", primary=" + primary + ", backup=" + backup + ']', - putObj1, - getObj1); - } - } - - /** - * - */ - public static class TestMutableObj { - /** */ - public int val; - - /** - * @param val Value. - */ - public TestMutableObj(int val) { - this.val = val; - } - } - - /** - * - */ - @IgniteImmutable - public static class TestImmutableObj { - /** */ - public int val; - - /** - * @param val Value. - */ - public TestImmutableObj(int val) { - this.val = val; - } - } - - /** * If hasNext() is called repeatedly, it should return the same result. */ private void checkIteratorHasNext() { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1b54b7f4/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java index 4042546..3d03d72 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java @@ -353,6 +353,54 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest extends GridCacheAbstr } /** + * @throws Exception If failed. + */ + public void testPutGetImmutable() throws Exception { + noInterceptor = true; + + IgniteCache<TestImmutableKey, TestImmutableValue> cache = grid(0).jcache(null); + + Map<TestImmutableKey, TestImmutableValue> map = new HashMap<>(); + + for (int i = 0; i < ITER_CNT; i++) { + TestImmutableKey key = new TestImmutableKey(i, i); + TestImmutableValue val = new TestImmutableValue(i); + + cache.put(key, val); + + map.put(key, val); + } + + GridCacheAdapter cache0 = internalCache(cache); + + GridCacheContext cctx = cache0.context(); + + for (Map.Entry<TestImmutableKey, TestImmutableValue> e : map.entrySet()) { + GridCacheEntryEx entry = cache0.peekEx(e.getKey()); + + assertNotNull("No entry for key: " + e.getKey(), entry); + + TestKey key0 = entry.key().value(cctx.cacheObjectContext(), false); + + assertSame(key0, e.getKey()); + + TestKey key1 = entry.key().value(cctx.cacheObjectContext(), true); + + assertSame(key0, key1); + + TestImmutableValue val0 = entry.rawGet().value(cctx.cacheObjectContext(), false); + + assertSame(val0, e.getValue()); + + TestImmutableValue val1 = entry.rawGet().value(cctx.cacheObjectContext(), true); + + assertSame(val0, val1); + + assertSame(e.getValue(), cache.get(e.getKey())); + } + } + + /** * */ public static class TestKey implements Externalizable { @@ -552,4 +600,41 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest extends GridCacheAbstr this.delegate = delegate; } } + + /** + * + */ + @IgniteImmutable + public static class TestImmutableKey extends TestKey { + /** + * + */ + public TestImmutableKey() { + // No-op. + } + + /** + * @param key Key. + * @param field Field. + */ + public TestImmutableKey(int key, int field) { + super(key, field); + } + } + + /** + * + */ + @IgniteImmutable + public static class TestImmutableValue { + /** */ + public int val; + + /** + * @param val Value. + */ + public TestImmutableValue(int val) { + this.val = val; + } + } }