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

Reply via email to