IGNITE-2434 - Do not update cache store if entry processor was a NOOP - Fixes #418.
Signed-off-by: Alexey Goncharuk <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5f4a1130 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5f4a1130 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5f4a1130 Branch: refs/heads/ignite-2324 Commit: 5f4a1130a0177598843b12a81a6502f475d2096c Parents: 0d8e6a8 Author: Alexey Goncharuk <[email protected]> Authored: Fri Jan 22 20:39:43 2016 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Fri Jan 22 20:39:43 2016 +0300 ---------------------------------------------------------------------- .../cache/distributed/dht/atomic/GridDhtAtomicCache.java | 11 +++++++---- .../apache/ignite/testsuites/IgniteCacheTestSuite5.java | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5f4a1130/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 81fd5d6..aa79cfa 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 @@ -1567,16 +1567,19 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> { try { Object computed = entryProcessor.process(invokeEntry, req.invokeArguments()); - updatedVal = ctx.unwrapTemporary(invokeEntry.getValue()); - - updated = ctx.toCacheObject(updatedVal); - if (computed != null) { if (invokeRes == null) invokeRes = new GridCacheReturn(node.isLocal()); invokeRes.addEntryProcessResult(ctx, entry.key(), invokeEntry.key(), computed, null); } + + if (!invokeEntry.modified()) + continue; + + updatedVal = ctx.unwrapTemporary(invokeEntry.getValue()); + + updated = ctx.toCacheObject(updatedVal); } catch (Exception e) { if (invokeRes == null) http://git-wip-us.apache.org/repos/asf/ignite/blob/5f4a1130/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java index 442e116..34b12a9 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java @@ -21,6 +21,7 @@ import junit.framework.TestSuite; import org.apache.ignite.internal.processors.cache.CacheNearReaderUpdateTest; import org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest; import org.apache.ignite.internal.processors.cache.IgniteCacheStoreCollectionTest; +import org.apache.ignite.internal.processors.cache.store.IgniteCacheWriteBehindNoUpdateSelfTest; /** * Test suite. @@ -36,6 +37,7 @@ public class IgniteCacheTestSuite5 extends TestSuite { suite.addTestSuite(CacheSerializableTransactionsTest.class); suite.addTestSuite(CacheNearReaderUpdateTest.class); suite.addTestSuite(IgniteCacheStoreCollectionTest.class); + suite.addTestSuite(IgniteCacheWriteBehindNoUpdateSelfTest.class); return suite; }
