Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
sboikov committed Mar 3, 2015
1 parent 9fdb40c commit 379b7f7
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
/**
*
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface IgniteImmutable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1040,7 +1040,9 @@ protected void recordNodeId(UUID nodeId) {
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.
Expand Down Expand Up @@ -1185,7 +1187,7 @@ else if (interceptorVal != val0)
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);
}
Expand Down Expand Up @@ -1467,6 +1469,11 @@ else if (ttl == CU.TTL_NOT_CHANGED)

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);
Expand Down Expand Up @@ -1583,7 +1590,7 @@ else if (ttl != CU.TTL_ZERO)

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);
}
Expand Down Expand Up @@ -2001,8 +2008,11 @@ else if (newSysTtl == CU.TTL_ZERO) {
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.
Expand Down Expand Up @@ -2159,18 +2169,16 @@ assert deletedUnlocked() || new0 || isInternal() : "Invalid entry [entry=" + thi
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);

cctx.config().getInterceptor().onAfterRemove(key0, old0);
}

if (interceptRes != null)
oldVal = cctx.unwrapTemporary(interceptRes.get2());
oldVal = cctx.toCacheObject(cctx.unwrapTemporary(interceptRes.get2()));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1415,7 +1415,7 @@ private UpdateBatchResult updateWithBatch(
if (val == null)
continue;

updated = ctx.toCacheKeyObject(ctx.unwrapTemporary(val));
updated = ctx.toCacheObject(ctx.unwrapTemporary(val));
}

// Update previous batch.
Expand Down Expand Up @@ -1979,13 +1979,17 @@ else if (F.contains(readers, node.id())) // Reader became primary or backup.
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));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1287,7 +1287,7 @@ else if (op == UPDATE) {
null);

Object interceptorVal = ctx.config().getInterceptor().onBeforePut(
entry.key(),
entry.key().value(ctx, false),
CU.value(old, ctx, false),
val);

Expand Down Expand Up @@ -1320,7 +1320,7 @@ else if (op == UPDATE) {
null);

IgniteBiTuple<Boolean, ?> interceptorRes = ctx.config().getInterceptor().onBeforeRemove(
entry.key(),
entry.key().value(ctx, false),
CU.value(old, ctx, false));

if (ctx.cancelRemove(interceptorRes))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,10 @@ protected void batchStoreCommit(Iterable<IgniteTxEntry> writeEntries) throws Ign
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;
Expand Down Expand Up @@ -579,7 +582,7 @@ else if (op == DELETE) {
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -600,9 +600,9 @@ private void testCancelRemove(String key, Operation op) throws Exception {

// 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);

Expand All @@ -623,9 +623,9 @@ private void testCancelRemove(String key, Operation op) throws Exception {

// 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.

Expand Down Expand Up @@ -660,9 +660,9 @@ private void testCancelRemove(String key, Operation op) throws Exception {

// 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();

Expand All @@ -681,9 +681,9 @@ private void testCancelRemove(String key, Operation op) throws Exception {

// 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));
}

/**
Expand Down Expand Up @@ -727,9 +727,9 @@ private void testRemove(String key, Operation op) throws Exception {

// 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);

Expand All @@ -750,9 +750,9 @@ private void testRemove(String key, Operation op) throws Exception {

// 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.

Expand Down Expand Up @@ -787,13 +787,13 @@ private void testRemove(String key, Operation op) throws Exception {

// 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.

Expand Down Expand Up @@ -826,13 +826,13 @@ private void testRemove(String key, Operation op) throws Exception {

// 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));
}

/**
Expand Down Expand Up @@ -1062,9 +1062,9 @@ private void testBatchRemove(Operation op) throws Exception {
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.

Expand All @@ -1091,17 +1091,17 @@ private void testBatchRemove(Operation op) throws Exception {
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.

Expand All @@ -1128,16 +1128,16 @@ private void testBatchRemove(Operation op) throws Exception {
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));
}

/**
Expand Down Expand Up @@ -1531,10 +1531,10 @@ private class Interceptor implements CacheInterceptor {
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();
Expand Down Expand Up @@ -1622,7 +1622,7 @@ private class Interceptor implements CacheInterceptor {
invokeCnt.incrementAndGet();

if (val != null) {
Object old = beforeRemoveMap.put(key, val);
Object old = beforeRmvMap.put(key, val);

if (old != null)
assertEquals(old, val);
Expand All @@ -1641,7 +1641,7 @@ private class Interceptor implements CacheInterceptor {
invokeCnt.incrementAndGet();

if (val != null) {
Object old = afterRemoveMap.put(key, val);
Object old = afterRmvMap.put(key, val);

if (old != null)
assertEquals(old, val);
Expand All @@ -1657,8 +1657,8 @@ public void reset() {
getMap.clear();
beforePutMap.clear();
afterPutMap.clear();
afterRemoveMap.clear();
beforeRemoveMap.clear();
afterRmvMap.clear();
beforeRmvMap.clear();

retInterceptor = null;
}
Expand Down

0 comments on commit 379b7f7

Please sign in to comment.