You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by es...@apache.org on 2019/01/25 18:24:38 UTC
[geode] branch develop updated: GEODE-6315: Handle null in
comparison in a compressed offheap region (#3115)
This is an automated email from the ASF dual-hosted git repository.
eshu11 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 425eb59 GEODE-6315: Handle null in comparison in a compressed offheap region (#3115)
425eb59 is described below
commit 425eb59a3c1cbbadb5d82d7466798f8b00e0c691
Author: pivotal-eshu <es...@pivotal.io>
AuthorDate: Fri Jan 25 10:24:26 2019 -0800
GEODE-6315: Handle null in comparison in a compressed offheap region (#3115)
---
.../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