You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by il...@apache.org on 2019/04/17 09:14:39 UTC
[ignite] branch master updated: IGNITE-11734 Avoid marshalling in
Cache.replace(k, oldVal,
newVal) when oldVal or newVal are null - Fixes #6444.
This is an automated email from the ASF dual-hosted git repository.
ilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new d25ecb4 IGNITE-11734 Avoid marshalling in Cache.replace(k, oldVal, newVal) when oldVal or newVal are null - Fixes #6444.
d25ecb4 is described below
commit d25ecb44c1ab9859204a29b443ffeb5ace7021de
Author: Vladislav Pyatkov <vl...@gmail.com>
AuthorDate: Wed Apr 17 12:11:51 2019 +0300
IGNITE-11734 Avoid marshalling in Cache.replace(k, oldVal, newVal) when oldVal or newVal are null - Fixes #6444.
Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
---
.../cache/CacheEntryPredicateContainsValue.java | 6 ++++++
.../GridCacheBinaryObjectsAbstractSelfTest.java | 20 ++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateContainsValue.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateContainsValue.java
index ad9861c..b5fde21 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateContainsValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateContainsValue.java
@@ -59,6 +59,12 @@ public class CacheEntryPredicateContainsValue extends CacheEntryPredicateAdapter
@Override public boolean apply(GridCacheEntryEx e) {
CacheObject val = peekVisibleValue(e);
+ if (this.val == null && val == null)
+ return true;
+
+ if (this.val == null || val == null)
+ return false;
+
GridCacheContext cctx = e.context();
if (this.val instanceof BinaryObject && val instanceof BinaryObject)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/binary/GridCacheBinaryObjectsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/binary/GridCacheBinaryObjectsAbstractSelfTest.java
index 94f6197..d097b2e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/binary/GridCacheBinaryObjectsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/binary/GridCacheBinaryObjectsAbstractSelfTest.java
@@ -316,6 +316,26 @@ public abstract class GridCacheBinaryObjectsAbstractSelfTest extends GridCommonA
* @throws Exception If failed.
*/
@Test
+ public void testReplaceWhenEmptyValue() throws Exception {
+ IgniteCache<Integer, BinaryObject> kpc = keepBinaryCache();
+
+ BinaryObjectBuilder bldr = grid(0).binary().builder("TestObjCls");
+
+ bldr.setField("val", -42);
+
+ BinaryObject testObj = bldr.build();
+
+ for (int i = 0; i < ENTRY_CNT; i++) {
+ assertNull(kpc.get(i));
+
+ assertFalse(kpc.replace(i, testObj, testObj));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
public void testRemove() throws Exception {
IgniteCache<Integer, TestObject> c = jcache(0);