You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2018/03/13 15:00:36 UTC
lucene-solr:master: SOLR-12070: Make sure searcher beans are
registered.
Repository: lucene-solr
Updated Branches:
refs/heads/master 8ba6a95e7 -> b6fcf4157
SOLR-12070: Make sure searcher beans are registered.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b6fcf415
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b6fcf415
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b6fcf415
Branch: refs/heads/master
Commit: b6fcf4157b21deb954c6058af161d9b0876599bb
Parents: 8ba6a95
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Tue Mar 13 15:59:01 2018 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Tue Mar 13 16:00:27 2018 +0100
----------------------------------------------------------------------
.../apache/solr/core/TestJmxIntegration.java | 37 ++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b6fcf415/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java b/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
index a830eb1..36f41e2 100644
--- a/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
+++ b/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.core;
+import com.codahale.metrics.MetricRegistry;
import org.apache.solr.metrics.SolrMetricManager;
import org.apache.solr.metrics.SolrMetricReporter;
import org.apache.solr.metrics.reporters.jmx.JmxMetricsReporter;
@@ -23,6 +24,7 @@ import org.apache.solr.metrics.reporters.jmx.JmxObjectNameFactory;
import org.apache.solr.metrics.reporters.SolrJmxReporter;
import org.apache.solr.SolrTestCaseJ4;
import org.junit.AfterClass;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
@@ -38,6 +40,7 @@ import javax.management.ObjectName;
import java.lang.invoke.MethodHandles;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
/**
* Test for JMX Integration
@@ -99,6 +102,12 @@ public class TestJmxIntegration extends SolrTestCaseJ4 {
mbeanServer = null;
}
+ @Before
+ public void resetIndex() throws Exception {
+ clearIndex();
+ assertU("commit", commit());
+ }
+
@Test
public void testJmxRegistration() throws Exception {
assertTrue("No MBeans found in server", mbeanServer.getMBeanCount() > 0);
@@ -162,6 +171,8 @@ public class TestJmxIntegration extends SolrTestCaseJ4 {
@Test
public void testJmxOnCoreReload() throws Exception {
+ // make sure searcher beans are registered
+ assertQ(req("q", "*:*"), "//result[@numFound='0']");
SolrMetricManager mgr = h.getCoreContainer().getMetricManager();
String registryName = h.getCore().getCoreMetricManager().getRegistryName();
@@ -195,6 +206,7 @@ public class TestJmxIntegration extends SolrTestCaseJ4 {
log.info("Before Reload: size of all core metrics: " + totalCoreMetrics + " MBeans: " + oldNumberOfObjects);
assertEquals("Number of registered MBeans is not the same as the number of core metrics", totalCoreMetrics, oldNumberOfObjects);
h.getCoreContainer().reload(coreName);
+ assertQ(req("q", "*:*"), "//result[@numFound='0']");
reporters = mgr.getReporters(registryName);
coreHashCode = String.valueOf(h.getCore().hashCode());
@@ -211,11 +223,24 @@ public class TestJmxIntegration extends SolrTestCaseJ4 {
Set<ObjectInstance> newBeans = mbeanServer.queryMBeans(null, null);
int newNumberOfObjects = 0;
+ Set<String> metricNames = new TreeSet<>();
+ Set<String> beanNames = new TreeSet<>();
try (SolrCore core = h.getCoreContainer().getCore(coreName)) {
- totalCoreMetrics = mgr.registry(registryName).getMetrics().size();
+ MetricRegistry registry = mgr.registry(registryName);
+ metricNames.addAll(registry.getNames());
+ totalCoreMetrics = registry.getMetrics().size();
for (ObjectInstance bean : newBeans) {
try {
if (tag.equals(mbeanServer.getAttribute(bean.getObjectName(), JmxMetricsReporter.INSTANCE_TAG))) {
+ String[] name = bean.getObjectName().toString().substring(32).split(",");
+ StringBuilder sb = new StringBuilder();
+ for (String n : name) {
+ if (sb.length() > 0) {
+ sb.append(".");
+ }
+ sb.append(n.split("=")[1]);
+ }
+ beanNames.add(sb.toString());
newNumberOfObjects++;
}
} catch (AttributeNotFoundException e) {
@@ -225,6 +250,14 @@ public class TestJmxIntegration extends SolrTestCaseJ4 {
}
log.info("After Reload: size of all core metrics: " + totalCoreMetrics + " MBeans: " + newNumberOfObjects);
- assertEquals("Number of registered MBeans is not the same as the number of core metrics", totalCoreMetrics, newNumberOfObjects);
+ if (totalCoreMetrics != newNumberOfObjects) {
+ Set<String> errors = new TreeSet<>(beanNames);
+ errors.removeAll(metricNames);
+ log.error("Unexpected bean names: " + errors);
+ errors = new TreeSet<>(metricNames);
+ errors.removeAll(beanNames);
+ log.error("Unexpected metric names: " + errors);
+ fail("Number of registered MBeans is not the same as the number of core metrics: " + totalCoreMetrics + " != " + newNumberOfObjects);
+ }
}
}