You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2016/12/22 19:32:59 UTC

[1/2] geode git commit: GEODE-2242: Invalid VersionTags are no longer replicated across the WAN

Repository: geode
Updated Branches:
  refs/heads/develop f097d7a77 -> 452fc9aec


GEODE-2242: Invalid VersionTags are no longer replicated across the WAN


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

Branch: refs/heads/develop
Commit: 452fc9aecf721fc424c09fdf0eb8f3dd4be8fa42
Parents: d707f46
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Wed Dec 21 15:06:37 2016 -0800
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Thu Dec 22 11:13:36 2016 -0800

----------------------------------------------------------------------
 .../cache/wan/GatewaySenderEventImpl.java       |  2 +-
 .../internal/cache/UpdateVersionDUnitTest.java  | 12 ++++---
 .../geode/internal/cache/wan/WANTestBase.java   |  5 +++
 .../SerialGatewaySenderQueueDUnitTest.java      |  7 +---
 .../serial/SerialWANPropagationDUnitTest.java   | 36 ++++++++++++++++++++
 5 files changed, 51 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/452fc9ae/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
index d4d21de..f8de085 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
@@ -289,7 +289,7 @@ public class GatewaySenderEventImpl
     // Initialize the creation timestamp
     this.creationTime = System.currentTimeMillis();
 
-    if (event.getVersionTag() != null) {
+    if (event.getVersionTag() != null && event.getVersionTag().hasValidVersion()) {
       this.versionTimeStamp = event.getVersionTag().getVersionTimeStamp();
     }
 

http://git-wip-us.apache.org/repos/asf/geode/blob/452fc9ae/geode-wan/src/test/java/org/apache/geode/internal/cache/UpdateVersionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/UpdateVersionDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/UpdateVersionDUnitTest.java
index 78a759e..6481ad5 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/UpdateVersionDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/UpdateVersionDUnitTest.java
@@ -130,6 +130,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             assertTrue(region instanceof PartitionedRegion);
 
             region.put(key, "value-1");
+            region.put(key, "value-2");
             Entry entry = region.getEntry(key);
             assertTrue(entry instanceof EntrySnapshot);
             RegionEntry regionEntry = ((EntrySnapshot) entry).getRegionEntry();
@@ -152,7 +153,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             tag.setIsRemoteForTesting();
 
             EntryEventImpl event =
-                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-2");
+                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-3");
 
             ((LocalRegion) region).basicUpdate(event, false, true, 0L, false);
 
@@ -277,6 +278,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             assertTrue(region instanceof DistributedRegion);
 
             region.put(key, "value-1");
+            region.put(key, "value-2");
             Entry entry = region.getEntry(key);
             assertTrue(entry instanceof NonTXEntry);
             RegionEntry regionEntry = ((NonTXEntry) entry).getRegionEntry();
@@ -299,7 +301,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             tag.setIsRemoteForTesting();
 
             EntryEventImpl event =
-                createNewEvent((DistributedRegion) region, tag, entry.getKey(), "value-2");
+                createNewEvent((DistributedRegion) region, tag, entry.getKey(), "value-3");
 
             ((LocalRegion) region).basicUpdate(event, false, true, 0L, false);
 
@@ -412,6 +414,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             assertTrue(region instanceof PartitionedRegion);
 
             region.put(key, "value-1");
+            region.put(key, "value-2");
             Entry entry = region.getEntry(key);
             assertTrue(entry instanceof EntrySnapshot);
             RegionEntry regionEntry = ((EntrySnapshot) entry).getRegionEntry();
@@ -434,7 +437,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             tag.setIsRemoteForTesting();
 
             EntryEventImpl event =
-                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-2");
+                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-3");
 
             ((LocalRegion) region).basicUpdate(event, false, true, 0L, false);
 
@@ -560,6 +563,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             assertTrue(region instanceof PartitionedRegion);
 
             region.put(key, "value-1");
+            region.put(key, "value-2");
             Entry entry = region.getEntry(key);
             assertTrue(entry instanceof EntrySnapshot);
             RegionEntry regionEntry = ((EntrySnapshot) entry).getRegionEntry();
@@ -582,7 +586,7 @@ public class UpdateVersionDUnitTest extends JUnit4DistributedTestCase {
             tag.setIsRemoteForTesting();
 
             EntryEventImpl event =
-                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-2");
+                createNewEvent((PartitionedRegion) region, tag, entry.getKey(), "value-3");
 
             ((LocalRegion) region).basicUpdate(event, false, true, 0L, false);
 

http://git-wip-us.apache.org/repos/asf/geode/blob/452fc9ae/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
index b0cece0..3f7f4c2 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
@@ -3447,6 +3447,11 @@ public class WANTestBase extends JUnit4DistributedTestCase {
     }
   }
 
+  protected static void verifyListenerEvents(final long expectedNumEvents) {
+    Awaitility.await().atMost(60, TimeUnit.SECONDS)
+        .until(() -> listener1.getNumEvents() == expectedNumEvents);
+  }
+
   protected Integer[] createLNAndNYLocators() {
     Integer lnPort = vm0.invoke(() -> createFirstLocatorWithDSId(1));
     Integer nyPort = vm1.invoke(() -> createFirstRemoteLocator(2, lnPort));

http://git-wip-us.apache.org/repos/asf/geode/blob/452fc9ae/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
index 7417c80..64f94dd 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
@@ -357,12 +357,7 @@ public class SerialGatewaySenderQueueDUnitTest extends WANTestBase {
     vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_RR", numPuts));
 
     // Verify receiver listener events
-    vm2.invoke(() -> SerialGatewaySenderQueueDUnitTest.verifyListenerEvents(maxSenders * numPuts));
-  }
-
-  private static void verifyListenerEvents(final long expectedNumEvents) {
-    Awaitility.await().atMost(60, TimeUnit.SECONDS)
-        .until(() -> listener1.getNumEvents() == expectedNumEvents);
+    vm2.invoke(() -> WANTestBase.verifyListenerEvents(maxSenders * numPuts));
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/geode/blob/452fc9ae/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialWANPropagationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialWANPropagationDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialWANPropagationDUnitTest.java
index 28f8f0c..a60614c 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialWANPropagationDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialWANPropagationDUnitTest.java
@@ -19,6 +19,8 @@ import static org.junit.Assert.*;
 import java.io.IOException;
 import java.util.Map;
 
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.Scope;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -1262,4 +1264,38 @@ public class SerialWANPropagationDUnitTest extends WANTestBase {
     vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_RR", 1000));
     vm3.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_RR", 1000));
   }
+
+  @Test
+  public void testPreloadedSerialPropagation() throws Exception {
+    // Start locators
+    Integer lnPort = vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1));
+    Integer nyPort = vm1.invoke(() -> WANTestBase.createFirstRemoteLocator(2, lnPort));
+
+    // Create receiver and preloaded region
+    String regionName = getTestMethodName() + "_preloaded";
+    vm2.invoke(() -> WANTestBase.createCache(nyPort));
+    vm2.invoke(() -> WANTestBase.createReplicatedRegion(regionName, null, Scope.DISTRIBUTED_ACK,
+        DataPolicy.PRELOADED, isOffHeap()));
+    vm2.invoke(() -> WANTestBase.createReceiver());
+    vm2.invoke(() -> WANTestBase.addListenerOnRegion(regionName));
+
+    // Create sender and preloaded region
+    vm4.invoke(() -> WANTestBase.createCache(lnPort));
+    vm4.invoke(() -> WANTestBase.createSender("ln", 2, false, 100, 10, false, false, null, false));
+    vm4.invoke(() -> WANTestBase.createReplicatedRegion(regionName, "ln", Scope.DISTRIBUTED_ACK,
+        DataPolicy.PRELOADED, isOffHeap()));
+
+    // Do puts
+    int numEvents = 10;
+    vm4.invoke(() -> WANTestBase.doPuts(regionName, numEvents));
+
+    // Verify receiver listener events
+    vm2.invoke(() -> WANTestBase.verifyListenerEvents(numEvents));
+
+    // Do destroys
+    vm4.invoke(() -> WANTestBase.doDestroys(regionName, numEvents));
+
+    // Verify receiver listener events
+    vm2.invoke(() -> WANTestBase.verifyListenerEvents(numEvents * 2));
+  }
 }


[2/2] geode git commit: GEODE-2234: Query stats are now calculated per member in the LuceneFunction

Posted by bo...@apache.org.
GEODE-2234: Query stats are now calculated per member in the LuceneFunction


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

Branch: refs/heads/develop
Commit: d707f46631888a2071b0e6d323d1ff50cb7d4e1b
Parents: f097d7a
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Tue Dec 20 10:24:17 2016 -0800
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Thu Dec 22 11:13:36 2016 -0800

----------------------------------------------------------------------
 .../cache/lucene/internal/LuceneIndexStats.java | 35 ++++++++++++++++++++
 .../internal/distributed/LuceneFunction.java    | 32 +++++++++++-------
 .../repository/IndexRepositoryImpl.java         |  4 +--
 .../internal/LuceneIndexStatsJUnitTest.java     | 13 ++++++++
 .../cli/LuceneIndexCommandsDUnitTest.java       |  2 +-
 .../distributed/LuceneFunctionJUnitTest.java    |  4 +++
 .../management/LuceneManagementDUnitTest.java   |  3 +-
 .../IndexRepositoryImplJUnitTest.java           |  4 +--
 8 files changed, 79 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexStats.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexStats.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexStats.java
index 013d44e..a914799 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexStats.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexStats.java
@@ -36,6 +36,10 @@ public class LuceneIndexStats {
   private static final int queryExecutionTimeId;
   private static final int queryExecutionsInProgressId;
   private static final int queryExecutionTotalHitsId;
+  private static final int repositoryQueryExecutionsId;
+  private static final int repositoryQueryExecutionTimeId;
+  private static final int repositoryQueryExecutionsInProgressId;
+  private static final int repositoryQueryExecutionTotalHitsId;
   private static final int updatesId;
   private static final int updateTimeId;
   private static final int updatesInProgressId;
@@ -58,6 +62,14 @@ public class LuceneIndexStats {
             "Number of query executions currently in progress", "operations"),
         f.createLongCounter("queryExecutionTotalHits",
             "Total number of documents returned by query executions", "entries"),
+        f.createIntCounter("repositoryQueryExecutions",
+            "Number of lucene repository queries executed on this member", "operations"),
+        f.createLongCounter("repositoryQueryExecutionTime",
+            "Amount of time spent executing lucene repository queries", "nanoseconds"),
+        f.createIntGauge("repositoryQueryExecutionsInProgress",
+            "Number of repository query executions currently in progress", "operations"),
+        f.createLongCounter("repositoryQueryExecutionTotalHits",
+            "Total number of documents returned by repository query executions", "entries"),
         f.createIntCounter("updates",
             "Number of lucene index documents added/removed on this member", "operations"),
         f.createLongCounter("updateTime",
@@ -75,6 +87,11 @@ public class LuceneIndexStats {
     queryExecutionTimeId = statsType.nameToId("queryExecutionTime");
     queryExecutionsInProgressId = statsType.nameToId("queryExecutionsInProgress");
     queryExecutionTotalHitsId = statsType.nameToId("queryExecutionTotalHits");
+    repositoryQueryExecutionsId = statsType.nameToId("repositoryQueryExecutions");
+    repositoryQueryExecutionTimeId = statsType.nameToId("repositoryQueryExecutionTime");
+    repositoryQueryExecutionsInProgressId =
+        statsType.nameToId("repositoryQueryExecutionsInProgress");
+    repositoryQueryExecutionTotalHitsId = statsType.nameToId("repositoryQueryExecutionTotalHits");
     updatesId = statsType.nameToId("updates");
     updateTimeId = statsType.nameToId("updateTime");
     updatesInProgressId = statsType.nameToId("updatesInProgress");
@@ -92,6 +109,24 @@ public class LuceneIndexStats {
   /**
    * @return the timestamp that marks the start of the operation
    */
+  public long startRepositoryQuery() {
+    stats.incInt(repositoryQueryExecutionsInProgressId, 1);
+    return getStatTime();
+  }
+
+  /**
+   * @param start the timestamp taken when the operation started
+   */
+  public void endRepositoryQuery(long start, final int totalHits) {
+    stats.incLong(repositoryQueryExecutionTimeId, getStatTime() - start);
+    stats.incInt(repositoryQueryExecutionsInProgressId, -1);
+    stats.incInt(repositoryQueryExecutionsId, 1);
+    stats.incLong(repositoryQueryExecutionTotalHitsId, totalHits);
+  }
+
+  /**
+   * @return the timestamp that marks the start of the operation
+   */
   public long startQuery() {
     stats.incInt(queryExecutionsInProgressId, 1);
     return getStatTime();

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunction.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunction.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunction.java
index 6a418b9..ec94469 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunction.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunction.java
@@ -19,6 +19,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.geode.cache.lucene.internal.LuceneIndexImpl;
+import org.apache.geode.cache.lucene.internal.LuceneIndexStats;
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.search.Query;
 
@@ -32,14 +34,11 @@ import org.apache.geode.cache.lucene.LuceneQueryException;
 import org.apache.geode.cache.lucene.LuceneQueryProvider;
 import org.apache.geode.cache.lucene.LuceneService;
 import org.apache.geode.cache.lucene.LuceneServiceProvider;
-import org.apache.geode.cache.lucene.internal.InternalLuceneIndex;
 import org.apache.geode.cache.lucene.internal.repository.IndexRepository;
 import org.apache.geode.cache.lucene.internal.repository.IndexResultCollector;
 import org.apache.geode.cache.lucene.internal.repository.RepositoryManager;
-import org.apache.geode.cache.query.QueryException;
 import org.apache.geode.internal.InternalEntity;
 import org.apache.geode.internal.cache.BucketNotFoundException;
-import org.apache.geode.internal.cache.execute.BucketMovedException;
 import org.apache.geode.internal.logging.LogService;
 
 /**
@@ -72,9 +71,10 @@ public class LuceneFunction extends FunctionAdapter implements InternalEntity {
     }
 
     LuceneService service = LuceneServiceProvider.get(region.getCache());
-    InternalLuceneIndex index =
-        (InternalLuceneIndex) service.getIndex(searchContext.getIndexName(), region.getFullPath());
+    LuceneIndexImpl index =
+        (LuceneIndexImpl) service.getIndex(searchContext.getIndexName(), region.getFullPath());
     RepositoryManager repoManager = index.getRepositoryManager();
+    LuceneIndexStats stats = index.getIndexStats();
 
     Query query = null;
     try {
@@ -95,15 +95,23 @@ public class LuceneFunction extends FunctionAdapter implements InternalEntity {
     }
 
     Collection<IndexResultCollector> results = new ArrayList<>();
+    TopEntriesCollector mergedResult = null;
     try {
-      Collection<IndexRepository> repositories = repoManager.getRepositories(ctx);
-      for (IndexRepository repo : repositories) {
-        IndexResultCollector collector = manager.newCollector(repo.toString());
-        logger.debug("Executing search on repo: " + repo.toString());
-        repo.query(query, resultLimit, collector);
-        results.add(collector);
+      long start = stats.startQuery();
+      try {
+        Collection<IndexRepository> repositories = repoManager.getRepositories(ctx);
+        for (IndexRepository repo : repositories) {
+          IndexResultCollector collector = manager.newCollector(repo.toString());
+          if (logger.isDebugEnabled()) {
+            logger.debug("Executing search on repo: " + repo.toString());
+          }
+          repo.query(query, resultLimit, collector);
+          results.add(collector);
+        }
+        mergedResult = (TopEntriesCollector) manager.reduce(results);
+      } finally {
+        stats.endQuery(start, mergedResult == null ? 0 : mergedResult.size());
       }
-      TopEntriesCollector mergedResult = (TopEntriesCollector) manager.reduce(results);
       resultSender.lastResult(mergedResult);
     } catch (IOException | BucketNotFoundException e) {
       logger.warn("", e);

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImpl.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImpl.java
index 68a0adb..572b5ea 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImpl.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImpl.java
@@ -101,7 +101,7 @@ public class IndexRepositoryImpl implements IndexRepository {
 
   @Override
   public void query(Query query, int limit, IndexResultCollector collector) throws IOException {
-    long start = stats.startQuery();
+    long start = stats.startRepositoryQuery();
     int totalHits = 0;
     IndexSearcher searcher = searcherManager.acquire();
     try {
@@ -117,7 +117,7 @@ public class IndexRepositoryImpl implements IndexRepository {
       }
     } finally {
       searcherManager.release(searcher);
-      stats.endQuery(start, totalHits);
+      stats.endRepositoryQuery(start, totalHits);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexStatsJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexStatsJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexStatsJUnitTest.java
index c70fa49..f9e200a 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexStatsJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexStatsJUnitTest.java
@@ -63,6 +63,19 @@ public class LuceneIndexStatsJUnitTest {
   }
 
   @Test
+  public void shouldIncrementRepositoryQueryStats() {
+
+    stats.startRepositoryQuery();
+    verifyIncInt("repositoryQueryExecutionsInProgress", 1);
+    stats.endRepositoryQuery(5, 2);
+    verifyIncInt("repositoryQueryExecutionsInProgress", -1);
+    verifyIncInt("repositoryQueryExecutions", 1);
+    verifyIncLong("repositoryQueryExecutionTotalHits", 2);
+    // Because the initial stat time is 0 and the final time is 5, the delta is -5
+    verifyIncLong("repositoryQueryExecutionTime", -5);
+  }
+
+  @Test
   public void shouldIncrementUpdateStats() {
 
     stats.startUpdate();

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
index 92641df..f0f1579 100755
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
@@ -148,7 +148,7 @@ public class LuceneIndexCommandsDUnitTest extends CliCommandTestBase {
     assertEquals(Collections.singletonList(INDEX_NAME), data.retrieveAllValues("Index Name"));
     assertEquals(Collections.singletonList("Initialized"), data.retrieveAllValues("Status"));
     assertEquals(Collections.singletonList("/region"), data.retrieveAllValues("Region Path"));
-    assertEquals(Collections.singletonList("113"), data.retrieveAllValues("Query Executions"));
+    assertEquals(Collections.singletonList("1"), data.retrieveAllValues("Query Executions"));
     assertEquals(Collections.singletonList("2"), data.retrieveAllValues("Commits"));
     assertEquals(Collections.singletonList("2"), data.retrieveAllValues("Updates"));
     assertEquals(Collections.singletonList("2"), data.retrieveAllValues("Documents"));

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
index edaa11c..71172f0 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
@@ -32,6 +32,7 @@ import org.apache.geode.cache.lucene.LuceneQueryFactory;
 import org.apache.geode.cache.lucene.LuceneQueryProvider;
 import org.apache.geode.cache.lucene.internal.InternalLuceneService;
 import org.apache.geode.cache.lucene.internal.LuceneIndexImpl;
+import org.apache.geode.cache.lucene.internal.LuceneIndexStats;
 import org.apache.geode.cache.lucene.internal.StringQueryProvider;
 import org.apache.geode.cache.lucene.internal.repository.IndexRepository;
 import org.apache.geode.cache.lucene.internal.repository.IndexResultCollector;
@@ -71,6 +72,7 @@ public class LuceneFunctionJUnitTest {
   IndexResultCollector mockCollector;
   InternalLuceneService mockService;
   LuceneIndexImpl mockIndex;
+  LuceneIndexStats mockStats;
 
   ArrayList<IndexRepository> repos;
   LuceneFunctionContext<IndexResultCollector> searchArgs;
@@ -269,6 +271,7 @@ public class LuceneFunctionJUnitTest {
     mockRepository1 = mock(IndexRepository.class, "repo1");
     mockRepository2 = mock(IndexRepository.class, "repo2");
     mockCollector = mock(IndexResultCollector.class);
+    mockStats = mock(LuceneIndexStats.class);
 
     repos = new ArrayList<IndexRepository>();
     repos.add(mockRepository1);
@@ -289,6 +292,7 @@ public class LuceneFunctionJUnitTest {
     when(mockService.getIndex(eq("indexName"), eq(regionPath))).thenReturn(mockIndex);
     when(mockIndex.getRepositoryManager()).thenReturn(mockRepoManager);
     when(mockIndex.getFieldNames()).thenReturn(new String[] {"gemfire"});
+    when(mockIndex.getIndexStats()).thenReturn(mockStats);
 
     query = queryProvider.getQuery(mockIndex);
   }

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
index 634ea2f..ef4681c 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
@@ -125,8 +125,9 @@ public class LuceneManagementDUnitTest extends ManagementTestBase {
     getManagingNode().invoke(() -> waitForMemberProxiesToRefresh(2));
 
     // Verify index metrics
+    int numManagedNodes = getManagedNodeList().size();
     getManagingNode().invoke(() -> verifyMBeanIndexMetricsValues(regionName, indexName, numPuts,
-        113/* 1 query per bucket */, 1/* 1 result */));
+        numManagedNodes/* 1 query per managed node */, 1/* 1 result */));
   }
 
   private static void waitForMemberProxiesToRefresh(int refreshCount) {

http://git-wip-us.apache.org/repos/asf/geode/blob/d707f466/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
index ac81c02..dd52258 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
@@ -153,8 +153,8 @@ public class IndexRepositoryImplJUnitTest {
         new Type2("Portland Cream doughnut", 1, 2L, 3.0, 4.0f, "Captain my Captain doughnut"));
     repo.commit();
     checkQuery("Cream", "s", "key2", "key4");
-    verify(stats, times(1)).startQuery();
-    verify(stats, times(1)).endQuery(anyLong(), eq(2));
+    verify(stats, times(1)).startRepositoryQuery();
+    verify(stats, times(1)).endRepositoryQuery(anyLong(), eq(2));
   }
 
   @Test