You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/05/25 21:53:57 UTC

[1/5] incubator-geode git commit: GEODE-1453: when parsing field value, should consider it is null

Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-1452 5e9f5c4ea -> ff8348e03


GEODE-1453: when parsing field value, should consider it is null


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/31096fbf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/31096fbf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/31096fbf

Branch: refs/heads/feature/GEODE-1452
Commit: 31096fbf927e75ba30c25deea985c2b40af75f75
Parents: bd892f5
Author: zhouxh <gz...@pivotal.io>
Authored: Tue May 24 17:25:37 2016 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Tue May 24 17:26:34 2016 -0700

----------------------------------------------------------------------
 .../serializer/PdxLuceneSerializer.java         |  3 +++
 .../serializer/ReflectionLuceneSerializer.java  |  3 +++
 .../lucene/LuceneQueriesIntegrationTest.java    | 20 +++++++++++++++++++-
 .../serializer/PdxFieldMapperJUnitTest.java     | 20 ++++++++++++++++++++
 .../ReflectionFieldMapperJUnitTest.java         | 16 ++++++++++++++++
 5 files changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/31096fbf/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxLuceneSerializer.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxLuceneSerializer.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxLuceneSerializer.java
index 3990614..13465d7 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxLuceneSerializer.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxLuceneSerializer.java
@@ -44,6 +44,9 @@ class PdxLuceneSerializer implements LuceneSerializer {
     for(String field : indexedFields) {
       if(pdx.hasField(field)) {
         Object fieldValue = pdx.getField(field);
+        if (fieldValue == null) {
+          continue;
+        }
         SerializerUtil.addField(doc, field, fieldValue);
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/31096fbf/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionLuceneSerializer.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionLuceneSerializer.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionLuceneSerializer.java
index a76478c..e06f99e 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionLuceneSerializer.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionLuceneSerializer.java
@@ -70,6 +70,9 @@ class ReflectionLuceneSerializer implements LuceneSerializer {
     for(Field field: fields) {
       try {
         Object fieldValue = field.get(value);
+        if (fieldValue == null) {
+          continue;
+        }
         SerializerUtil.addField(doc, field.getName(), fieldValue);
       } catch (IllegalArgumentException | IllegalAccessException e) {
         //TODO - what to do if we can't read a field?

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/31096fbf/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
index 4ebb9c4..13df7a9 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
@@ -134,7 +134,25 @@ public class LuceneQueriesIntegrationTest extends LuceneIntegrationTest {
     verifyQuery("field1:one AND field2:two", "A");
     verifyQuery("field1:three AND field2:four", "A");
   }
-  
+
+  @Test()
+  public void shouldAllowNullInFieldValue() throws ParseException {
+    Map<String, Analyzer> fields = new HashMap<String, Analyzer>();
+    fields.put("field1", null);
+    fields.put("field2", null);
+    luceneService.createIndex(INDEX_NAME, REGION_NAME, fields);
+    Region region = cache.createRegionFactory(RegionShortcut.PARTITION)
+      .create(REGION_NAME);
+    final LuceneIndex index = luceneService.getIndex(INDEX_NAME, REGION_NAME);
+
+    //Put two values with some of the same tokens
+    String value1 = "one three";
+    region.put("A", new TestObject(value1, null));
+    index.waitUntilFlushed(60000);
+
+    verifyQuery("field1:one", "A");
+  }
+
   @Test()
   public void throwFunctionExceptionWhenGivenBadQuery() {
     LuceneService luceneService = LuceneServiceProvider.get(cache);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/31096fbf/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxFieldMapperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxFieldMapperJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxFieldMapperJUnitTest.java
index 278e818..9726df5 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxFieldMapperJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/PdxFieldMapperJUnitTest.java
@@ -78,4 +78,24 @@ public class PdxFieldMapperJUnitTest {
     assertEquals("a", doc.getField("s").stringValue());
     assertEquals(5, doc.getField("i").numericValue());
   }
+  
+  @Test
+  public void testNullField() {
+    String[] fields = new String[] {"s", "i"};
+    PdxLuceneSerializer mapper = new PdxLuceneSerializer(fields);
+    
+    PdxInstance i = mock(PdxInstance.class);
+    
+    when(i.hasField("s")).thenReturn(true);
+    when(i.hasField("i")).thenReturn(true);
+    when(i.getField("s")).thenReturn("a");
+    when(i.getField("i")).thenReturn(null);
+    
+    Document doc = new Document();
+    mapper.toDocument(i, doc);
+    
+    assertEquals(1, doc.getFields().size());
+    assertEquals("a", doc.getField("s").stringValue());
+    assertNull(doc.getField("i"));
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/31096fbf/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionFieldMapperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionFieldMapperJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionFieldMapperJUnitTest.java
index c187022..7727718 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionFieldMapperJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/serializer/ReflectionFieldMapperJUnitTest.java
@@ -80,4 +80,20 @@ public class ReflectionFieldMapperJUnitTest {
     assertEquals("a", doc.getField("s").stringValue());
     assertEquals("b", doc.getField("s2").stringValue());
   }
+  
+  @Test
+  public void testNullField() {
+
+    String[] fields = new String[] {"s", "o", "s2"};
+    ReflectionLuceneSerializer mapper = new ReflectionLuceneSerializer(Type2.class, fields);
+    
+    Type2 t = new Type2("a", 1, 2L, 3.0, 4.0f, null);
+    
+    Document doc = new Document();
+    mapper.toDocument(t, doc);
+    
+    assertEquals(1, doc.getFields().size());
+    assertEquals("a", doc.getField("s").stringValue());
+    assertNull(doc.getField("s2"));
+  }
 }


[5/5] incubator-geode git commit: Merge remote-tracking branch 'origin/develop' into feature/GEODE-1452

Posted by kl...@apache.org.
Merge remote-tracking branch 'origin/develop' into feature/GEODE-1452


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/ff8348e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/ff8348e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/ff8348e0

Branch: refs/heads/feature/GEODE-1452
Commit: ff8348e030aa099c950a81f206c28a4d7305c5e7
Parents: 5e9f5c4 1d11d94
Author: Kirk Lund <kl...@apache.org>
Authored: Wed May 25 14:45:31 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Wed May 25 14:45:31 2016 -0700

----------------------------------------------------------------------
 .../gemfire/internal/cache/LocalDataSet.java    | 12 ++++++++---
 .../gemfire/internal/cache/LocalRegion.java     |  2 +-
 .../sequencelog/SequenceLoggerImpl.java         | 21 ++++++++------------
 .../gemfire/internal/Bug49856JUnitTest.java     |  8 ++------
 .../internal/cache/GemFireCacheImplTest.java    |  5 +----
 .../internal/cache/LocalDataSetTest.java        | 14 +++++++++++++
 .../serializer/PdxLuceneSerializer.java         |  3 +++
 .../serializer/ReflectionLuceneSerializer.java  |  3 +++
 .../lucene/LuceneQueriesIntegrationTest.java    | 20 ++++++++++++++++++-
 .../serializer/PdxFieldMapperJUnitTest.java     | 20 +++++++++++++++++++
 .../ReflectionFieldMapperJUnitTest.java         | 16 +++++++++++++++
 11 files changed, 96 insertions(+), 28 deletions(-)
----------------------------------------------------------------------



[3/5] incubator-geode git commit: GEODE-1428: deliver event synchronously if it is rejected

Posted by kl...@apache.org.
GEODE-1428: deliver event synchronously if it is rejected

Changed unit test to use close instead of emergencyClose.
Doing this caused an event to be sent after the async thread
pool was shutdown which resulted in a suspect warning without
this fix.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/fa6e722e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/fa6e722e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/fa6e722e

Branch: refs/heads/feature/GEODE-1452
Commit: fa6e722e727a6f40788014aa6cac17890f6a64c9
Parents: cae8f7f
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Mon May 23 15:28:30 2016 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed May 25 10:07:48 2016 -0700

----------------------------------------------------------------------
 .../java/com/gemstone/gemfire/internal/cache/LocalRegion.java   | 2 +-
 .../gemstone/gemfire/internal/cache/GemFireCacheImplTest.java   | 5 +----
 2 files changed, 2 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa6e722e/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
index 8be9c4b..cc5ac59 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
@@ -7581,7 +7581,7 @@ public class LocalRegion extends AbstractRegion
           }
           catch (RejectedExecutionException rex) {
             ed.release();
-            logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_0_EVENT_NOT_DISPATCHED_DUE_TO_REJECTED_EXECUTION), rex);
+            dispatchEvent(this, event, op);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa6e722e/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java
index 7f95cad..71b7fc6 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java
@@ -61,10 +61,7 @@ public class GemFireCacheImplTest {
         return executor.getCompletedTaskCount() == MAX_THREADS+initialCount;
       });
     } finally {
-      // Note: if close is called it tries to dispatch and event which does not work
-      // because the async event pool has been shutdown.
-      // Once GEODE-1428 is fixed this test can call close instead of emergencyClose
-      gfc.emergencyClose();
+      gfc.close();
     }
   }
 }


[4/5] incubator-geode git commit: GEODE-1458: Prevent sequence logger from launching and closing a thread

Posted by kl...@apache.org.
GEODE-1458: Prevent sequence logger from launching and closing a thread

The sequence logger code was launching a thread from a static block,
even if it was not enabled. The thread was then immediately dying.
Fixing the code to not launch the thread unless it is enabled, and to
not die immediately if it is.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/1d11d94d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/1d11d94d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/1d11d94d

Branch: refs/heads/feature/GEODE-1452
Commit: 1d11d94dfe600b99007ccdc28f178d98fd86fd30
Parents: fa6e722
Author: Dan Smith <up...@apache.org>
Authored: Fri May 20 14:06:13 2016 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Wed May 25 10:14:08 2016 -0700

----------------------------------------------------------------------
 .../sequencelog/SequenceLoggerImpl.java         | 21 ++++++++------------
 .../gemfire/internal/Bug49856JUnitTest.java     |  8 ++------
 2 files changed, 10 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1d11d94d/geode-core/src/main/java/com/gemstone/gemfire/internal/sequencelog/SequenceLoggerImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/sequencelog/SequenceLoggerImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/sequencelog/SequenceLoggerImpl.java
index 26c944e..678bc11 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/sequencelog/SequenceLoggerImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/sequencelog/SequenceLoggerImpl.java
@@ -31,9 +31,9 @@ import com.gemstone.gemfire.internal.sequencelog.io.OutputStreamAppender;
  */
 public class SequenceLoggerImpl implements SequenceLogger {
 
-  private static final SequenceLogger INSTANCE;
+  private static final SequenceLoggerImpl INSTANCE;
   
-  public static final String ENABLED_TYPES_PROPERTY = "gemfire.GraphLoggerImpl.ENABLED_TYPES";
+  public static final String ENABLED_TYPES_PROPERTY = "gemfire.SequenceLoggerImpl.ENABLED_TYPES";
   
   private final EnumSet<GraphType> enabledTypes;
   
@@ -59,8 +59,8 @@ public class SequenceLoggerImpl implements SequenceLogger {
    * Should be invoked when GemFire cache is closing or closed. 
    */
   public static void signalCacheClose() {
-    if (INSTANCE != null) {
-      ((SequenceLoggerImpl)INSTANCE).consumerThread.interrupt();
+    if (INSTANCE != null && INSTANCE.consumerThread != null) {
+      INSTANCE.consumerThread.interrupt();
     }
   }
 
@@ -95,8 +95,10 @@ public class SequenceLoggerImpl implements SequenceLogger {
   }
   
   private void start() {
-    consumerThread = new ConsumerThread();
-    consumerThread.start();
+    if(!enabledTypes.isEmpty()) {
+      consumerThread = new ConsumerThread();
+      consumerThread.start();
+    }
   }
 
   private class ConsumerThread extends Thread {
@@ -110,13 +112,6 @@ public class SequenceLoggerImpl implements SequenceLogger {
     public void run() {
       Transition edge;
       while(true) {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-        if (cache == null || cache.isClosed()) {
-          if (appender != null) {
-            appender.close();
-          }
-          break;
-        }
         try {
           edge = edges.take();
           if(edge instanceof FlushToken) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1d11d94d/geode-core/src/test/java/com/gemstone/gemfire/internal/Bug49856JUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/Bug49856JUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/Bug49856JUnitTest.java
index 1335b3d..48ba516 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/Bug49856JUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/Bug49856JUnitTest.java
@@ -42,7 +42,6 @@ public class Bug49856JUnitTest {
     GemFireCacheImpl cache = (GemFireCacheImpl)ccf.create();
 
     SystemFailure.getFailure();
-    SequenceLoggerImpl.getInstance();
 
     Thread.sleep(5000);
     // Assert the threads have been started.
@@ -65,20 +64,17 @@ public class Bug49856JUnitTest {
         watchDogRunning = true;
       } else if (t.getName().contains("SystemFailure Proctor")) {
         proctorRunning = true;
-      } else if (t.getName().contains("State Logger Consumer Thread")) {
-        loggerConsumerRunning = true;
       }
     }
     StringBuilder sb = new StringBuilder(new Date(System.currentTimeMillis()).toString());
     sb.append((watchDogRunning ^ expectThreads) ? " SystemFailure WatchDog, " : " ");
     sb.append((proctorRunning ^ expectThreads) ? "SystemFailure Proctor, " : "");
-    sb.append((loggerConsumerRunning ^ expectThreads) ? "State Logger Consumer Thread " : "");
     sb.append(expectThreads ? "not started." : "still running.");
 
     if (expectThreads) {
-      assertTrue(sb.toString(), proctorRunning && watchDogRunning && loggerConsumerRunning);
+      assertTrue(sb.toString(), proctorRunning && watchDogRunning);
     } else {
-      assertTrue(sb.toString(), !proctorRunning && !watchDogRunning && !loggerConsumerRunning);
+      assertTrue(sb.toString(), !proctorRunning && !watchDogRunning);
     }
   }
 


[2/5] incubator-geode git commit: GEODE-1425: fix callback arg parameter order

Posted by kl...@apache.org.
GEODE-1425: fix callback arg parameter order


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/cae8f7fe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/cae8f7fe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/cae8f7fe

Branch: refs/heads/feature/GEODE-1452
Commit: cae8f7fecf893ea4a31f7b06c22130fb646407bb
Parents: 31096fb
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Tue May 24 14:40:10 2016 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed May 25 10:03:57 2016 -0700

----------------------------------------------------------------------
 .../gemstone/gemfire/internal/cache/LocalDataSet.java | 12 +++++++++---
 .../gemfire/internal/cache/LocalDataSetTest.java      | 14 ++++++++++++++
 2 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cae8f7fe/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalDataSet.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalDataSet.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalDataSet.java
index daa7d3f..62c95e1 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalDataSet.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalDataSet.java
@@ -72,7 +72,7 @@ import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
  * 
  *
  */
-public final class LocalDataSet implements Region, QueryExecutor {
+public class LocalDataSet implements Region, QueryExecutor {
 
   private static final Logger logger = LogService.getLogger();
   
@@ -122,9 +122,15 @@ public final class LocalDataSet implements Region, QueryExecutor {
     return new LocalEntriesSet(IteratorType.KEYS);
   }
 
+  /**
+   * This instance method was added so that unit tests could mock it
+   */
+  int getHashKey(Operation op, Object key, Object value, Object callbackArg) {
+    return PartitionedRegionHelper.getHashKey(this.proxy, op, key, value, callbackArg);
+  }
+  
   private boolean isInDataSet(Object key, Object callbackArgument) {
-    int bucketId = PartitionedRegionHelper.getHashKey(this.proxy,
-        Operation.CONTAINS_KEY, key, callbackArgument, null);
+    int bucketId = getHashKey(Operation.CONTAINS_KEY, key, null, callbackArgument);
     Integer bucketIdInt = Integer.valueOf(bucketId);
     return buckets.contains(bucketIdInt);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cae8f7fe/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/LocalDataSetTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/LocalDataSetTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/LocalDataSetTest.java
index fd813ed..21bac84 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/LocalDataSetTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/LocalDataSetTest.java
@@ -26,6 +26,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import com.gemstone.gemfire.cache.Operation;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)
@@ -49,4 +50,17 @@ public class LocalDataSetTest {
     assertFalse(lds.isEmpty());
   }
   
+  @Test
+  public void verifyThatGetCallbackArgIsCorrectlyPassedToGetHashKey() {
+    PartitionedRegion pr = mock(PartitionedRegion.class);
+    when(pr.getTotalNumberOfBuckets()).thenReturn(33);
+    LocalDataSet lds = new LocalDataSet(pr, Collections.emptySet());
+    LocalDataSet spy = spy(lds);
+    Object key = "key";
+    Object callbackArg = "callbackArg";
+    
+    spy.get(key, callbackArg);
+    
+    verify(spy).getHashKey(Operation.CONTAINS_KEY, key, null, callbackArg);
+  }
 }