Repository: incubator-ignite Updated Branches: refs/heads/ignite-51 d8f6d8e71 -> 99b215a05
# 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/379b7f79 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/379b7f79 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/379b7f79 Branch: refs/heads/ignite-51 Commit: 379b7f799f5b9e7280e4f9b0ddd0115bc630c81d Parents: 9fdb40c Author: sboikov <sboi...@gridgain.com> Authored: Tue Mar 3 10:45:49 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Tue Mar 3 11:24:05 2015 +0300 ---------------------------------------------------------------------- .../apache/ignite/cache/IgniteImmutable.java | 1 + .../processors/cache/GridCacheMapEntry.java | 26 ++++-- .../dht/atomic/GridDhtAtomicCache.java | 12 ++- .../local/atomic/GridLocalAtomicCache.java | 4 +- .../transactions/IgniteTxLocalAdapter.java | 7 +- .../GridCacheInterceptorAbstractSelfTest.java | 86 ++++++++++---------- 6 files changed, 76 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java b/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java index 04c4df2..8a750c8 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java @@ -22,6 +22,7 @@ import java.lang.annotation.*; /** * */ +@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface IgniteImmutable { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/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 b93b76f..6dd4cae 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 @@ -1040,7 +1040,9 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { if (interceptorVal == null) return new GridCacheUpdateTxResult(false, (CacheObject)cctx.unwrapTemporary(old)); else if (interceptorVal != val0) - val = cctx.toCacheKeyObject(cctx.unwrapTemporary(interceptorVal)); + val0 = cctx.unwrapTemporary(interceptorVal); + + val = cctx.toCacheObject(val0); } // Determine new ttl and expire time. @@ -1185,7 +1187,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { interceptRes = cctx.config().getInterceptor().onBeforeRemove(key0, old0); if (cctx.cancelRemove(interceptRes)) { - CacheObject ret = cctx.toCacheKeyObject(cctx.unwrapTemporary(interceptRes.get2())); + CacheObject ret = cctx.toCacheObject(cctx.unwrapTemporary(interceptRes.get2())); return new GridCacheUpdateTxResult(false, ret); } @@ -1467,6 +1469,11 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { if (interceptorVal == null) return new GridTuple3<>(false, cctx.unwrapTemporary(old0), invokeRes); + else { + updated0 = cctx.unwrapTemporary(interceptorVal); + + updated = cctx.toCacheObject(updated0); + } } else { key0 = value(key0, key, false); @@ -1583,7 +1590,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { if (intercept) { if (op == GridCacheOperation.UPDATE) - cctx.config().getInterceptor().onAfterPut(key0, val); + cctx.config().getInterceptor().onAfterPut(key0, updated0); else cctx.config().getInterceptor().onAfterRemove(key0, old0); } @@ -2001,8 +2008,11 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { null, null, false); - else if (interceptorVal != updated0) - updated = cctx.toCacheObject(cctx.unwrapTemporary(updated0)); + else if (interceptorVal != updated0) { + updated0 = cctx.unwrapTemporary(interceptorVal); + + updated = cctx.toCacheObject(updated0); + } } // Try write-through. @@ -2159,10 +2169,8 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { cctx.dataStructures().onEntryUpdated(key, op == GridCacheOperation.DELETE); if (intercept) { - key0 = value(key0, key, false); - if (op == GridCacheOperation.UPDATE) - cctx.config().getInterceptor().onAfterPut(key0, val.value(cctx, false)); + cctx.config().getInterceptor().onAfterPut(key0, updated0); else { old0 = value(old0, oldVal, false); @@ -2170,7 +2178,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { } if (interceptRes != null) - oldVal = cctx.unwrapTemporary(interceptRes.get2()); + oldVal = cctx.toCacheObject(cctx.unwrapTemporary(interceptRes.get2())); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java index 23fd465..e4212de 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java @@ -1415,7 +1415,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> { if (val == null) continue; - updated = ctx.toCacheKeyObject(ctx.unwrapTemporary(val)); + updated = ctx.toCacheObject(ctx.unwrapTemporary(val)); } // Update previous batch. @@ -1979,13 +1979,17 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> { assert updRes.newTtl() == CU.TTL_NOT_CHANGED || expiry != null; if (intercept) { - if (op == UPDATE) - ctx.config().getInterceptor().onAfterPut(entry.key(), updRes.newValue()); + if (op == UPDATE) { + ctx.config().getInterceptor().onAfterPut( + entry.key().value(ctx, false), + CU.value(updRes.newValue(), ctx, false)); + } else { assert op == DELETE : op; // Old value should be already loaded for 'CacheInterceptor.onBeforeRemove'. - ctx.config().getInterceptor().onAfterRemove(entry.key(), updRes.oldValue()); + ctx.config().getInterceptor().onAfterRemove(entry.key().value(ctx, false), + CU.value(updRes.oldValue(), ctx, false)); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java index 8aa6a63..588d987 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java @@ -1287,7 +1287,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> { null); Object interceptorVal = ctx.config().getInterceptor().onBeforePut( - entry.key(), + entry.key().value(ctx, false), CU.value(old, ctx, false), val); @@ -1320,7 +1320,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> { null); IgniteBiTuple<Boolean, ?> interceptorRes = ctx.config().getInterceptor().onBeforeRemove( - entry.key(), + entry.key().value(ctx, false), CU.value(old, ctx, false)); if (ctx.cancelRemove(interceptorRes)) http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java index d841c90..699e239 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java @@ -538,7 +538,10 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter if (intercept) { Object oldVal = CU.value(e.cached().rawGetOrUnmarshal(true), cacheCtx, false); - Object interceptorVal = cacheCtx.config().getInterceptor().onBeforePut(key, oldVal, val); + Object interceptorVal = cacheCtx.config().getInterceptor().onBeforePut( + key.value(cacheCtx, false), + oldVal, + CU.value(val, cacheCtx, false)); if (interceptorVal == null) continue; @@ -579,7 +582,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter Object oldVal = CU.value(e.cached().rawGetOrUnmarshal(true), cacheCtx, false); IgniteBiTuple<Boolean, Object> t = cacheCtx.config().getInterceptor() - .onBeforeRemove(key, oldVal); + .onBeforeRemove(key.value(cacheCtx, false), oldVal); if (cacheCtx.cancelRemove(t)) continue; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/379b7f79/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java index f5b9d85..c20279d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java @@ -600,9 +600,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(0, interceptor.beforeRemoveMap.size()); + assertEquals(0, interceptor.beforeRmvMap.size()); - assertEquals(null, interceptor.beforeRemoveMap.get(key)); + assertEquals(null, interceptor.beforeRmvMap.get(key)); log.info("Remove 2 " + op); @@ -623,9 +623,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(0, interceptor.beforeRemoveMap.size()); + assertEquals(0, interceptor.beforeRmvMap.size()); - assertEquals(null, interceptor.beforeRemoveMap.get(key)); + assertEquals(null, interceptor.beforeRmvMap.get(key)); // Disable interceptor and update cache. @@ -660,9 +660,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(1, interceptor.beforeRemoveMap.size()); + assertEquals(1, interceptor.beforeRmvMap.size()); - assertEquals(1, interceptor.beforeRemoveMap.get(key)); + assertEquals(1, interceptor.beforeRmvMap.get(key)); interceptor.reset(); @@ -681,9 +681,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(1, interceptor.beforeRemoveMap.size()); + assertEquals(1, interceptor.beforeRmvMap.size()); - assertEquals(1, interceptor.beforeRemoveMap.get(key)); + assertEquals(1, interceptor.beforeRmvMap.get(key)); } /** @@ -727,9 +727,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(0, interceptor.beforeRemoveMap.size()); + assertEquals(0, interceptor.beforeRmvMap.size()); - assertEquals(0, interceptor.afterRemoveMap.size()); + assertEquals(0, interceptor.afterRmvMap.size()); log.info("Remove 2 " + op); @@ -750,9 +750,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(0, interceptor.beforeRemoveMap.size()); + assertEquals(0, interceptor.beforeRmvMap.size()); - assertEquals(0, interceptor.afterRemoveMap.size()); + assertEquals(0, interceptor.afterRmvMap.size()); // Disable interceptor and update cache. @@ -787,13 +787,13 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(1, interceptor.beforeRemoveMap.size()); + assertEquals(1, interceptor.beforeRmvMap.size()); - assertEquals(1, interceptor.beforeRemoveMap.get(key)); + assertEquals(1, interceptor.beforeRmvMap.get(key)); - assertEquals(1, interceptor.afterRemoveMap.size()); + assertEquals(1, interceptor.afterRmvMap.size()); - assertEquals(1, interceptor.afterRemoveMap.get(key)); + assertEquals(1, interceptor.afterRmvMap.get(key)); // Disable interceptor and update cache. @@ -826,13 +826,13 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst // Check values passed to interceptor. - assertEquals(1, interceptor.beforeRemoveMap.size()); + assertEquals(1, interceptor.beforeRmvMap.size()); - assertEquals(2, interceptor.beforeRemoveMap.get(key)); + assertEquals(2, interceptor.beforeRmvMap.get(key)); - assertEquals(1, interceptor.afterRemoveMap.size()); + assertEquals(1, interceptor.afterRmvMap.size()); - assertEquals(2, interceptor.afterRemoveMap.get(key)); + assertEquals(2, interceptor.afterRmvMap.get(key)); } /** @@ -1062,9 +1062,9 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst checkCacheValue(key2, null); checkCacheValue(key3, null); - assertEquals(0, interceptor.beforeRemoveMap.size()); + assertEquals(0, interceptor.beforeRmvMap.size()); - assertEquals(0, interceptor.afterRemoveMap.size()); + assertEquals(0, interceptor.afterRmvMap.size()); // Disable interceptor and put some values in cache. @@ -1091,17 +1091,17 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst checkCacheValue(key2, null); checkCacheValue(key3, null); - assertEquals(3, interceptor.beforeRemoveMap.size()); + assertEquals(3, interceptor.beforeRmvMap.size()); - assertEquals(1, interceptor.beforeRemoveMap.get(key1)); - assertEquals(2, interceptor.beforeRemoveMap.get(key2)); - assertEquals(3, interceptor.beforeRemoveMap.get(key3)); + assertEquals(1, interceptor.beforeRmvMap.get(key1)); + assertEquals(2, interceptor.beforeRmvMap.get(key2)); + assertEquals(3, interceptor.beforeRmvMap.get(key3)); - assertEquals(3, interceptor.afterRemoveMap.size()); + assertEquals(3, interceptor.afterRmvMap.size()); - assertEquals(1, interceptor.afterRemoveMap.get(key1)); - assertEquals(2, interceptor.afterRemoveMap.get(key2)); - assertEquals(3, interceptor.afterRemoveMap.get(key3)); + assertEquals(1, interceptor.afterRmvMap.get(key1)); + assertEquals(2, interceptor.afterRmvMap.get(key2)); + assertEquals(3, interceptor.afterRmvMap.get(key3)); // Disable interceptor and put some values in cache. @@ -1128,16 +1128,16 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst checkCacheValue(key2, null); checkCacheValue(key3, null); - assertEquals(3, interceptor.beforeRemoveMap.size()); + assertEquals(3, interceptor.beforeRmvMap.size()); - assertEquals(1, interceptor.beforeRemoveMap.get(key1)); - assertEquals(2, interceptor.beforeRemoveMap.get(key2)); - assertEquals(3, interceptor.beforeRemoveMap.get(key3)); + assertEquals(1, interceptor.beforeRmvMap.get(key1)); + assertEquals(2, interceptor.beforeRmvMap.get(key2)); + assertEquals(3, interceptor.beforeRmvMap.get(key3)); - assertEquals(2, interceptor.afterRemoveMap.size()); + assertEquals(2, interceptor.afterRmvMap.size()); - assertEquals(2, interceptor.afterRemoveMap.get(key2)); - assertEquals(3, interceptor.afterRemoveMap.get(key3)); + assertEquals(2, interceptor.afterRmvMap.get(key2)); + assertEquals(3, interceptor.afterRmvMap.get(key3)); } /** @@ -1531,10 +1531,10 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst private final Map<Object, IgniteBiTuple> beforePutMap = new ConcurrentHashMap8<>(); /** */ - private final Map<Object, Object> beforeRemoveMap = new ConcurrentHashMap8<>(); + private final Map<Object, Object> beforeRmvMap = new ConcurrentHashMap8<>(); /** */ - private final Map<Object, Object> afterRemoveMap = new ConcurrentHashMap8<>(); + private final Map<Object, Object> afterRmvMap = new ConcurrentHashMap8<>(); /** */ private final AtomicInteger invokeCnt = new AtomicInteger(); @@ -1622,7 +1622,7 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst invokeCnt.incrementAndGet(); if (val != null) { - Object old = beforeRemoveMap.put(key, val); + Object old = beforeRmvMap.put(key, val); if (old != null) assertEquals(old, val); @@ -1641,7 +1641,7 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst invokeCnt.incrementAndGet(); if (val != null) { - Object old = afterRemoveMap.put(key, val); + Object old = afterRmvMap.put(key, val); if (old != null) assertEquals(old, val); @@ -1657,8 +1657,8 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst getMap.clear(); beforePutMap.clear(); afterPutMap.clear(); - afterRemoveMap.clear(); - beforeRemoveMap.clear(); + afterRmvMap.clear(); + beforeRmvMap.clear(); retInterceptor = null; }