This is an automated email from the ASF dual-hosted git repository. eshu11 pushed a commit to branch feature/GEODE-6315 in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-6315 by this push: new 5bf8302 GEODE-6315: Handle null in comparison in a compressed offheap region 5bf8302 is described below commit 5bf83024cff9f6d8f68d435d23f1d1a9e6218549 Author: eshu <e...@pivotal.io> AuthorDate: Wed Jan 23 14:06:00 2019 -0800 GEODE-6315: Handle null in comparison in a compressed offheap region --- .../geode/internal/cache/ValueComparisonHelper.java | 6 +++--- .../geode/internal/cache/ValueComparisonHelperTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ValueComparisonHelper.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ValueComparisonHelper.java index 285e8e5..2315701 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/ValueComparisonHelper.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ValueComparisonHelper.java @@ -227,6 +227,9 @@ public class ValueComparisonHelper { } Object cdVal = cd.getValue(); if (cdVal instanceof byte[]) { + if (obj == null || obj == Token.NOT_AVAILABLE || Token.isInvalidOrRemoved(obj)) { + return false; + } byte[] cdValBytes = (byte[]) cdVal; PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes, cache); if (pi != null) { @@ -250,9 +253,6 @@ public class ValueComparisonHelper { if (obj instanceof CachedDeserializable) { deserializedObj = ((CachedDeserializable) obj).getDeserializedForReading(); } else { - if (obj == null || obj == Token.NOT_AVAILABLE || Token.isInvalidOrRemoved(obj)) { - return false; - } // TODO OPTIMIZE: Before serializing all of obj we could get the top // level class name of cdVal and compare it to the top level class name of obj. deserializedObj = obj; diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ValueComparisonHelperTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ValueComparisonHelperTest.java index 830ff7f..b39ea8d 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/ValueComparisonHelperTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ValueComparisonHelperTest.java @@ -509,6 +509,10 @@ public class ValueComparisonHelperTest { ValueComparisonHelper.checkEquals(cachedDeserializable, null, false, mock(InternalCache.class))) .isFalse(); + assertThat( + ValueComparisonHelper.checkEquals(cachedDeserializable, null, true, + mock(InternalCache.class))) + .isFalse(); } @Test @@ -521,6 +525,10 @@ public class ValueComparisonHelperTest { ValueComparisonHelper.checkEquals(cachedDeserializable, Token.NOT_AVAILABLE, false, mock(InternalCache.class))) .isFalse(); + assertThat( + ValueComparisonHelper.checkEquals(cachedDeserializable, Token.NOT_AVAILABLE, true, + mock(InternalCache.class))) + .isFalse(); } @Test @@ -537,6 +545,14 @@ public class ValueComparisonHelperTest { ValueComparisonHelper.checkEquals(cachedDeserializable, Token.LOCAL_INVALID, false, mock(InternalCache.class))) .isFalse(); + assertThat( + ValueComparisonHelper.checkEquals(cachedDeserializable, Token.INVALID, true, + mock(InternalCache.class))) + .isFalse(); + assertThat( + ValueComparisonHelper.checkEquals(cachedDeserializable, Token.LOCAL_INVALID, true, + mock(InternalCache.class))) + .isFalse(); } @Test