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 2016/12/20 10:48:42 UTC
[37/44] lucene-solr:jira/solr-9854: SOLR-4735 Un-staticize
SolrMetricManager and other fixes: * static methods and
SharedMetricsRegistries caused issues when multiple CoreContainers were
present under the same classloader. * However, use SharedMetricsReg
SOLR-4735 Un-staticize SolrMetricManager and other fixes:
* static methods and SharedMetricsRegistries caused issues
when multiple CoreContainers were present under the same classloader.
* However, use SharedMetricsRegistries for solr.jetty and solr.jvm registries.
* fix JVM metrics registration to use a prefix.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/adfb4a50
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/adfb4a50
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/adfb4a50
Branch: refs/heads/jira/solr-9854
Commit: adfb4a5052afc0885905702d4858a303b2f710ae
Parents: 67dc760
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Mon Dec 19 21:29:29 2016 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Mon Dec 19 21:29:29 2016 +0100
----------------------------------------------------------------------
.../org/apache/solr/core/CoreContainer.java | 29 +++--
.../src/java/org/apache/solr/core/SolrCore.java | 36 +++---
.../apache/solr/handler/RequestHandlerBase.java | 14 +--
.../solr/handler/admin/MetricsHandler.java | 9 +-
.../solr/metrics/SolrCoreMetricManager.java | 14 ++-
.../apache/solr/metrics/SolrMetricManager.java | 114 +++++++++++++------
.../apache/solr/metrics/SolrMetricProducer.java | 4 +-
.../apache/solr/metrics/SolrMetricReporter.java | 5 +-
.../solr/metrics/reporters/SolrJmxReporter.java | 6 +-
.../apache/solr/servlet/SolrDispatchFilter.java | 16 +--
.../solr/metrics/SolrCoreMetricManagerTest.java | 42 +++----
.../solr/metrics/SolrMetricManagerTest.java | 83 ++++++++------
.../solr/metrics/SolrMetricReporterTest.java | 4 +-
.../solr/metrics/SolrMetricTestUtils.java | 6 +-
.../metrics/SolrMetricsIntegrationTest.java | 16 +--
.../metrics/reporters/MockMetricReporter.java | 6 +-
.../metrics/reporters/SolrJmxReporterTest.java | 26 +++--
.../java/org/apache/solr/util/TestHarness.java | 10 +-
18 files changed, 260 insertions(+), 180 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 0703212..6e640bc 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -161,6 +161,8 @@ public class CoreContainer {
private BackupRepositoryFactory backupRepoFactory;
+ protected SolrMetricManager metricManager;
+
protected MetricsHandler metricsHandler;
/**
@@ -430,6 +432,10 @@ public class CoreContainer {
return pkiAuthenticationPlugin;
}
+ public SolrMetricManager getMetricManager() {
+ return metricManager;
+ }
+
//-------------------------------------------------------------------
// Initialization / Cleanup
//-------------------------------------------------------------------
@@ -470,6 +476,8 @@ public class CoreContainer {
MDCLoggingContext.setNode(this);
+ metricManager = new SolrMetricManager();
+
securityConfHandler = isZooKeeperAware() ? new SecurityConfHandlerZk(this) : new SecurityConfHandlerLocal(this);
reloadSecurityProperties();
this.backupRepoFactory = new BackupRepositoryFactory(cfg.getBackupRepositoryPlugins());
@@ -481,12 +489,15 @@ public class CoreContainer {
configSetsHandler = createHandler(CONFIGSETS_HANDLER_PATH, cfg.getConfigSetsHandlerClass(), ConfigSetsHandler.class);
metricsHandler = createHandler(METRICS_PATH, MetricsHandler.class.getName(), MetricsHandler.class);
containerHandlers.put(AUTHZ_PATH, securityConfHandler);
- securityConfHandler.initializeMetrics(SolrInfoMBean.Group.node.toString(), AUTHZ_PATH);
+ securityConfHandler.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), AUTHZ_PATH);
containerHandlers.put(AUTHC_PATH, securityConfHandler);
if(pkiAuthenticationPlugin != null)
containerHandlers.put(PKIAuthenticationPlugin.PATH, pkiAuthenticationPlugin.getRequestHandler());
- SolrMetricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, SolrInfoMBean.Group.node);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, SolrInfoMBean.Group.node);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, SolrInfoMBean.Group.jvm);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, SolrInfoMBean.Group.jetty);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, SolrInfoMBean.Group.http);
coreConfigService = ConfigSetService.createConfigSetService(cfg, loader, zkSys.zkController);
@@ -497,11 +508,11 @@ public class CoreContainer {
Gauge<Integer> lazyCores = () -> solrCores.getCoreNames().size() - solrCores.getCores().size();
Gauge<Integer> unloadedCores = () -> solrCores.getAllCoreNames().size() - solrCores.getCoreNames().size();
- SolrMetricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
+ metricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
loadedCores, true, "loaded", "cores");
- SolrMetricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
+ metricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
lazyCores, true, "lazy", "cores");
- SolrMetricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
+ metricManager.register(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node),
unloadedCores, true, "unloaded", "cores");
// setup executor to load cores in parallel
@@ -677,7 +688,9 @@ public class CoreContainer {
}
}
- SolrMetricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node));
+ if (metricManager != null) {
+ metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node));
+ }
// It should be safe to close the authorization plugin at this point.
try {
@@ -1056,7 +1069,7 @@ public class CoreContainer {
coresLocator.delete(this, cd);
// delete metrics specific to this core
- SolrMetricManager.removeRegistry(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, name));
+ metricManager.removeRegistry(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, name));
if (core == null) {
// transient core
@@ -1197,7 +1210,7 @@ public class CoreContainer {
containerHandlers.put(path, (SolrRequestHandler)handler);
}
if (handler instanceof SolrMetricProducer) {
- ((SolrMetricProducer)handler).initializeMetrics(SolrInfoMBean.Group.node.toString(), path);
+ ((SolrMetricProducer)handler).initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), path);
}
return handler;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 4a63686..3d78c40 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -192,7 +192,7 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
private final PluginBag<SearchComponent> searchComponents = new PluginBag<>(SearchComponent.class, this);
private final PluginBag<UpdateRequestProcessorFactory> updateProcessors = new PluginBag<>(UpdateRequestProcessorFactory.class, this, true);
private final Map<String,UpdateRequestProcessorChain> updateProcessorChains;
- private final SolrCoreMetricManager metricManager;
+ private final SolrCoreMetricManager coreMetricManager;
private final Map<String, SolrInfoMBean> infoRegistry;
private final IndexDeletionPolicyWrapper solrDelPolicy;
private final SolrSnapshotMetaDataManager snapshotMgr;
@@ -402,8 +402,8 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
this.name = v;
this.logid = (v==null)?"":("["+v+"] ");
this.coreDescriptor = new CoreDescriptor(v, this.coreDescriptor);
- if (metricManager != null) {
- metricManager.afterCoreSetName();
+ if (coreMetricManager != null) {
+ coreMetricManager.afterCoreSetName();
}
}
@@ -417,8 +417,8 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
*
* @return the {@link SolrCoreMetricManager} for this core
*/
- public SolrCoreMetricManager getMetricManager() {
- return metricManager;
+ public SolrCoreMetricManager getCoreMetricManager() {
+ return coreMetricManager;
}
/**
@@ -864,14 +864,16 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
checkVersionFieldExistsInSchema(schema, coreDescriptor);
// Initialize the metrics manager
- this.metricManager = initMetricManager(config);
+ this.coreMetricManager = initCoreMetricManager(config);
+
+ SolrMetricManager metricManager = this.coreDescriptor.getCoreContainer().getMetricManager();
// initialize searcher-related metrics
- newSearcherCounter = SolrMetricManager.counter(metricManager.getRegistryName(), "newSearcher");
- newSearcherTimer = SolrMetricManager.timer(metricManager.getRegistryName(), "newSearcherTime");
- newSearcherWarmupTimer = SolrMetricManager.timer(metricManager.getRegistryName(), "newSearcherWarmup");
- newSearcherMaxReachedCounter = SolrMetricManager.counter(metricManager.getRegistryName(), "newSearcherMaxReached");
- newSearcherOtherErrorsCounter = SolrMetricManager.counter(metricManager.getRegistryName(), "newSearcherErrors");
+ newSearcherCounter = metricManager.counter(coreMetricManager.getRegistryName(), "newSearcher");
+ newSearcherTimer = metricManager.timer(coreMetricManager.getRegistryName(), "newSearcherTime");
+ newSearcherWarmupTimer = metricManager.timer(coreMetricManager.getRegistryName(), "newSearcherWarmup");
+ newSearcherMaxReachedCounter = metricManager.counter(coreMetricManager.getRegistryName(), "newSearcherMaxReached");
+ newSearcherOtherErrorsCounter = metricManager.counter(coreMetricManager.getRegistryName(), "newSearcherErrors");
// Initialize JMX
this.infoRegistry = initInfoRegistry(name, config);
@@ -1083,10 +1085,10 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
* @param config the given configuration
* @return an instance of {@link SolrCoreMetricManager}
*/
- private SolrCoreMetricManager initMetricManager(SolrConfig config) {
- SolrCoreMetricManager metricManager = new SolrCoreMetricManager(this);
- metricManager.loadReporters();
- return metricManager;
+ private SolrCoreMetricManager initCoreMetricManager(SolrConfig config) {
+ SolrCoreMetricManager coreMetricManager = new SolrCoreMetricManager(this);
+ coreMetricManager.loadReporters();
+ return coreMetricManager;
}
private Map<String,SolrInfoMBean> initInfoRegistry(String name, SolrConfig config) {
@@ -1410,7 +1412,7 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
}
try {
- metricManager.close();
+ coreMetricManager.close();
} catch (Throwable e) {
SolrException.log(log, e);
if (e instanceof Error) {
@@ -2819,7 +2821,7 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
if (solrInfoMBean instanceof SolrMetricProducer) {
SolrMetricProducer producer = (SolrMetricProducer) solrInfoMBean;
- metricManager.registerMetricProducer(name, producer);
+ coreMetricManager.registerMetricProducer(name, producer);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 7d9d464..85597dc 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -133,13 +133,13 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
}
@Override
- public Collection<String> initializeMetrics(String registryName, String scope) {
- numErrors = SolrMetricManager.meter(registryName, "errors", getCategory().toString(), scope);
- numServerErrors = SolrMetricManager.meter(registryName, "serverErrors", getCategory().toString(), scope);
- numClientErrors = SolrMetricManager.meter(registryName, "clientErrors", getCategory().toString(), scope);
- numTimeouts = SolrMetricManager.meter(registryName, "timeouts", getCategory().toString(), scope);
- requests = SolrMetricManager.counter(registryName, "requests", getCategory().toString(), scope);
- requestTimes = SolrMetricManager.timer(registryName, "requestTimes", getCategory().toString(), scope);
+ public Collection<String> initializeMetrics(SolrMetricManager manager, String registryName, String scope) {
+ numErrors = manager.meter(registryName, "errors", getCategory().toString(), scope);
+ numServerErrors = manager.meter(registryName, "serverErrors", getCategory().toString(), scope);
+ numClientErrors = manager.meter(registryName, "clientErrors", getCategory().toString(), scope);
+ numTimeouts = manager.meter(registryName, "timeouts", getCategory().toString(), scope);
+ requests = manager.counter(registryName, "requests", getCategory().toString(), scope);
+ requestTimes = manager.timer(registryName, "requestTimes", getCategory().toString(), scope);
return Arrays.asList("errors", "serverErrors", "clientErrors", "timeouts", "requestTimes", "requests");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java
index 1adc480..78b2045 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java
@@ -48,13 +48,16 @@ import org.apache.solr.util.stats.MetricUtils;
*/
public class MetricsHandler extends RequestHandlerBase implements PermissionNameProvider {
final CoreContainer container;
+ final SolrMetricManager metricManager;
public MetricsHandler() {
this.container = null;
+ this.metricManager = null;
}
public MetricsHandler(CoreContainer container) {
this.container = container;
+ this.metricManager = this.container.getMetricManager();
}
@Override
@@ -80,13 +83,13 @@ public class MetricsHandler extends RequestHandlerBase implements PermissionName
container.getAllCoreNames().forEach(s -> {
String coreRegistryName;
try (SolrCore core = container.getCore(s)) {
- coreRegistryName = core.getMetricManager().getRegistryName();
+ coreRegistryName = core.getCoreMetricManager().getRegistryName();
}
- MetricRegistry registry = SolrMetricManager.registry(coreRegistryName);
+ MetricRegistry registry = metricManager.registry(coreRegistryName);
response.add(coreRegistryName, MetricUtils.toNamedList(registry, metricFilters));
});
} else {
- MetricRegistry registry = SolrMetricManager.registry(registryName);
+ MetricRegistry registry = metricManager.registry(registryName);
response.add(registryName, MetricUtils.toNamedList(registry, metricFilters));
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
index 18307ee..0e5403b 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
@@ -37,6 +37,7 @@ public class SolrCoreMetricManager implements Closeable {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final SolrCore core;
+ private final SolrMetricManager metricManager;
private String registryName;
/**
@@ -46,6 +47,7 @@ public class SolrCoreMetricManager implements Closeable {
*/
public SolrCoreMetricManager(SolrCore core) {
this.core = core;
+ this.metricManager = core.getCoreDescriptor().getCoreContainer().getMetricManager();
registryName = createRegistryName(core.getCoreDescriptor().getCollectionName(), core.getName());
}
@@ -56,7 +58,7 @@ public class SolrCoreMetricManager implements Closeable {
public void loadReporters() {
NodeConfig nodeConfig = core.getCoreDescriptor().getCoreContainer().getConfig();
PluginInfo[] pluginInfos = nodeConfig.getMetricReporterPlugins();
- SolrMetricManager.loadReporters(pluginInfos, core.getResourceLoader(), SolrInfoMBean.Group.core, registryName);
+ metricManager.loadReporters(pluginInfos, core.getResourceLoader(), SolrInfoMBean.Group.core, registryName);
}
/**
@@ -71,10 +73,10 @@ public class SolrCoreMetricManager implements Closeable {
return;
}
// close old reporters
- SolrMetricManager.closeReporters(oldRegistryName);
- SolrMetricManager.moveMetrics(oldRegistryName, registryName, null);
+ metricManager.closeReporters(oldRegistryName);
+ metricManager.moveMetrics(oldRegistryName, registryName, null);
// old registry is no longer used - we have moved the metrics
- SolrMetricManager.removeRegistry(oldRegistryName);
+ metricManager.removeRegistry(oldRegistryName);
// load reporters again, using the new core name
loadReporters();
}
@@ -90,7 +92,7 @@ public class SolrCoreMetricManager implements Closeable {
throw new IllegalArgumentException("registerMetricProducer() called with illegal arguments: " +
"scope = " + scope + ", producer = " + producer);
}
- Collection<String> registered = producer.initializeMetrics(getRegistryName(), scope);
+ Collection<String> registered = producer.initializeMetrics(metricManager, getRegistryName(), scope);
if (registered == null || registered.isEmpty()) {
throw new IllegalArgumentException("registerMetricProducer() did not register any metrics " +
"for scope = " + scope + ", producer = " + producer);
@@ -102,7 +104,7 @@ public class SolrCoreMetricManager implements Closeable {
*/
@Override
public void close() throws IOException {
- SolrMetricManager.closeReporters(getRegistryName());
+ metricManager.closeReporters(getRegistryName());
}
public SolrCore getCore() {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
index b700782..3f51aef 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -24,6 +24,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -59,7 +61,9 @@ import org.slf4j.LoggerFactory;
* names.</p>
* <p>Solr uses several different registries for collecting metrics belonging to different groups, using
* {@link org.apache.solr.core.SolrInfoMBean.Group} as the main name of the registry (plus the
- * above-mentioned prefix).</p>
+ * above-mentioned prefix). Instances of {@link SolrMetricManager} are created for each {@link org.apache.solr.core.CoreContainer},
+ * and most registries are local to each instance, with the exception of two global registries:
+ * <code>solr.jetty</code> and <code>solr.jvm</code>, which are shared between all {@link org.apache.solr.core.CoreContainer}-s</p>
*/
public class SolrMetricManager {
@@ -67,12 +71,21 @@ public class SolrMetricManager {
public static final String REGISTRY_NAME_PREFIX = "solr.";
- private static final Map<String, Map<String, SolrMetricReporter>> reporters = new HashMap<>();
+ public static final String JETTY_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoMBean.Group.jetty.toString();
- private static final Lock reportersLock = new ReentrantLock();
+ public static final String JVM_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoMBean.Group.jvm.toString();
- // don't create instances of this class
- private SolrMetricManager() { }
+ private final ConcurrentMap<String, MetricRegistry> registries = new ConcurrentHashMap<>();
+
+ // these reporters are per CoreContainer
+ private final Map<String, Map<String, SolrMetricReporter>> reporters = new HashMap<>();
+
+ // these reporters are per JVM
+ private static final Map<String, Map<String, SolrMetricReporter>> sharedReporters = new HashMap<>();
+
+ private final Lock reportersLock = new ReentrantLock();
+
+ public SolrMetricManager() { }
/**
* An implementation of {@link MetricFilter} that selects metrics
@@ -125,8 +138,11 @@ public class SolrMetricManager {
/**
* Return a set of existing registry names.
*/
- public static Set<String> registryNames() {
- return SharedMetricRegistries.names();
+ public Set<String> registryNames() {
+ Set<String> set = new HashSet<>();
+ set.addAll(registries.keySet());
+ set.addAll(SharedMetricRegistries.names());
+ return Collections.unmodifiableSet(set);
}
/**
@@ -134,20 +150,40 @@ public class SolrMetricManager {
* @param registry name of the registry
* @return existing or newly created registry
*/
- public static MetricRegistry registry(String registry) {
- return SharedMetricRegistries.getOrCreate(overridableRegistryName(registry));
+ public MetricRegistry registry(String registry) {
+ registry = overridableRegistryName(registry);
+ if (JETTY_REGISTRY.equals(registry) || JVM_REGISTRY.equals(registry)) {
+ return SharedMetricRegistries.getOrCreate(registry);
+ } else {
+ final MetricRegistry existing = registries.get(registry);
+ if (existing == null) {
+ final MetricRegistry created = new MetricRegistry();
+ final MetricRegistry raced = registries.putIfAbsent(registry, created);
+ if (raced == null) {
+ return created;
+ } else {
+ return raced;
+ }
+ } else {
+ return existing;
+ }
+ }
}
/**
* Remove a named registry.
* @param registry name of the registry to remove
*/
- public static void removeRegistry(String registry) {
+ public void removeRegistry(String registry) {
// close any reporters for this registry first
closeReporters(registry);
// make sure we use a name with prefix, with overrides
registry = overridableRegistryName(registry);
- SharedMetricRegistries.remove(registry);
+ if (JETTY_REGISTRY.equals(registry) || JVM_REGISTRY.equals(registry)) {
+ SharedMetricRegistries.remove(registry);
+ } else {
+ registries.remove(registry);
+ }
}
/**
@@ -158,7 +194,7 @@ public class SolrMetricManager {
* @param filter optional {@link MetricFilter} to select what metrics to move. If null
* then all metrics will be moved.
*/
- public static void moveMetrics(String fromRegistry, String toRegistry, MetricFilter filter) {
+ public void moveMetrics(String fromRegistry, String toRegistry, MetricFilter filter) {
MetricRegistry from = registry(fromRegistry);
MetricRegistry to = registry(toRegistry);
if (from == to) {
@@ -182,19 +218,23 @@ public class SolrMetricManager {
* already exist.
* @param registry registry name
* @param metrics metric set to register
- * @param skipExisting if true then already existing metrics with the same name will be kept.
+ * @param force if true then already existing metrics with the same name will be replaced.
* When false and a metric with the same name already exists an exception
* will be thrown.
+ * @param metricPath (optional) additional top-most metric name path elements
* @throws Exception if a metric with this name already exists.
*/
- public static void registerAll(String registry, MetricSet metrics, boolean skipExisting) throws Exception {
+ public void registerAll(String registry, MetricSet metrics, boolean force, String... metricPath) throws Exception {
MetricRegistry metricRegistry = registry(registry);
- Map<String, Metric> existingMetrics = metricRegistry.getMetrics();
- for (Map.Entry<String, Metric> entry : metrics.getMetrics().entrySet()) {
- if (skipExisting && existingMetrics.containsKey(entry.getKey())) {
- continue;
+ synchronized (metricRegistry) {
+ Map<String, Metric> existingMetrics = metricRegistry.getMetrics();
+ for (Map.Entry<String, Metric> entry : metrics.getMetrics().entrySet()) {
+ String fullName = mkName(entry.getKey(), metricPath);
+ if (force && existingMetrics.containsKey(fullName)) {
+ metricRegistry.remove(fullName);
+ }
+ metricRegistry.register(fullName, entry.getValue());
}
- metricRegistry.register(entry.getKey(), entry.getValue());
}
}
@@ -202,7 +242,7 @@ public class SolrMetricManager {
* Remove all metrics from a specified registry.
* @param registry registry name
*/
- public static void clearRegistry(String registry) {
+ public void clearRegistry(String registry) {
registry(registry).removeMatching(MetricFilter.ALL);
}
@@ -216,7 +256,7 @@ public class SolrMetricManager {
* with the prefix will be removed.
* @return set of metrics names that have been removed.
*/
- public static Set<String> clearMetrics(String registry, String... metricPath) {
+ public Set<String> clearMetrics(String registry, String... metricPath) {
PrefixFilter filter;
if (metricPath == null || metricPath.length == 0) {
filter = new PrefixFilter("");
@@ -236,7 +276,7 @@ public class SolrMetricManager {
* @param metricPath (optional) additional top-most metric name path elements
* @return existing or a newly created {@link Meter}
*/
- public static Meter meter(String registry, String metricName, String... metricPath) {
+ public Meter meter(String registry, String metricName, String... metricPath) {
return registry(registry).meter(mkName(metricName, metricPath));
}
@@ -248,7 +288,7 @@ public class SolrMetricManager {
* @param metricPath (optional) additional top-most metric name path elements
* @return existing or a newly created {@link Timer}
*/
- public static Timer timer(String registry, String metricName, String... metricPath) {
+ public Timer timer(String registry, String metricName, String... metricPath) {
return registry(registry).timer(mkName(metricName, metricPath));
}
@@ -260,7 +300,7 @@ public class SolrMetricManager {
* @param metricPath (optional) additional top-most metric name path elements
* @return existing or a newly created {@link Counter}
*/
- public static Counter counter(String registry, String metricName, String... metricPath) {
+ public Counter counter(String registry, String metricName, String... metricPath) {
return registry(registry).counter(mkName(metricName, metricPath));
}
@@ -272,7 +312,7 @@ public class SolrMetricManager {
* @param metricPath (optional) additional top-most metric name path elements
* @return existing or a newly created {@link Histogram}
*/
- public static Histogram histogram(String registry, String metricName, String... metricPath) {
+ public Histogram histogram(String registry, String metricName, String... metricPath) {
return registry(registry).histogram(mkName(metricName, metricPath));
}
@@ -287,13 +327,15 @@ public class SolrMetricManager {
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
*/
- public static void register(String registry, Metric metric, boolean force, String metricName, String... metricPath) {
+ public void register(String registry, Metric metric, boolean force, String metricName, String... metricPath) {
MetricRegistry metricRegistry = registry(registry);
String fullName = mkName(metricName, metricPath);
- if (force && metricRegistry.getMetrics().containsKey(fullName)) {
- metricRegistry.remove(fullName);
+ synchronized (metricRegistry) {
+ if (force && metricRegistry.getMetrics().containsKey(fullName)) {
+ metricRegistry.remove(fullName);
+ }
+ metricRegistry.register(fullName, metric);
}
- metricRegistry.register(fullName, metric);
}
@@ -405,7 +447,7 @@ public class SolrMetricManager {
* @param group selected group, not null
* @param registryNames optional child registry name elements
*/
- public static void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, SolrInfoMBean.Group group, String... registryNames) {
+ public void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, SolrInfoMBean.Group group, String... registryNames) {
if (pluginInfos == null || pluginInfos.length == 0) {
return;
}
@@ -459,7 +501,7 @@ public class SolrMetricManager {
* @param pluginInfo plugin configuration. Plugin "name" and "class" attributes are required.
* @throws Exception if any argument is missing or invalid
*/
- public static void loadReporter(String registry, SolrResourceLoader loader, PluginInfo pluginInfo) throws Exception {
+ public void loadReporter(String registry, SolrResourceLoader loader, PluginInfo pluginInfo) throws Exception {
if (registry == null || pluginInfo == null || pluginInfo.name == null || pluginInfo.className == null) {
throw new IllegalArgumentException("loadReporter called with missing arguments: " +
"registry=" + registry + ", loader=" + loader + ", pluginInfo=" + pluginInfo);
@@ -470,8 +512,8 @@ public class SolrMetricManager {
pluginInfo.className,
SolrMetricReporter.class,
new String[0],
- new Class[] { String.class },
- new Object[] { registry }
+ new Class[] { SolrMetricManager.class, String.class },
+ new Object[] { this, registry }
);
try {
reporter.init(pluginInfo);
@@ -509,7 +551,7 @@ public class SolrMetricManager {
* @param name reporter name
* @return true if a named reporter existed and was closed.
*/
- public static boolean closeReporter(String registry, String name) {
+ public boolean closeReporter(String registry, String name) {
// make sure we use a name with prefix, with overrides
registry = overridableRegistryName(registry);
try {
@@ -546,7 +588,7 @@ public class SolrMetricManager {
* @param registry registry name
* @return names of closed reporters
*/
- public static Set<String> closeReporters(String registry) {
+ public Set<String> closeReporters(String registry) {
// make sure we use a name with prefix, with overrides
registry = overridableRegistryName(registry);
try {
@@ -583,7 +625,7 @@ public class SolrMetricManager {
* @param registry registry name
* @return map of reporters and their names, may be empty but never null
*/
- public static Map<String, SolrMetricReporter> getReporters(String registry) {
+ public Map<String, SolrMetricReporter> getReporters(String registry) {
// make sure we use a name with prefix, with overrides
registry = overridableRegistryName(registry);
try {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
index 929e6a2..b09a90a 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
@@ -18,6 +18,7 @@ package org.apache.solr.metrics;
import java.util.Collection;
+import com.codahale.metrics.MetricRegistry;
import org.apache.solr.core.SolrInfoMBean;
/**
@@ -28,10 +29,11 @@ public interface SolrMetricProducer extends SolrInfoMBean {
/**
* Initializes metrics specific to this producer
+ * @param manager an instance of {@link SolrMetricManager}
* @param registry registry name where metrics are registered
* @param scope scope of the metrics (eg. handler name) to separate metrics of
* instances of the same component executing in different contexts
* @return registered (or existing) unqualified names of metrics specific to this producer.
*/
- Collection<String> initializeMetrics(String registry, String scope);
+ Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/metrics/SolrMetricReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricReporter.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricReporter.java
index cfe5d67..a36a1c3 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricReporter.java
@@ -18,6 +18,7 @@ package org.apache.solr.metrics;
import java.io.Closeable;
+import com.codahale.metrics.MetricRegistry;
import org.apache.solr.core.PluginInfo;
import org.apache.solr.util.SolrPluginUtils;
import org.apache.solr.util.plugin.PluginInfoInitialized;
@@ -28,6 +29,7 @@ import org.apache.solr.util.plugin.PluginInfoInitialized;
public abstract class SolrMetricReporter implements Closeable, PluginInfoInitialized {
protected final String registryName;
+ protected final SolrMetricManager metricManager;
protected PluginInfo pluginInfo;
/**
@@ -35,8 +37,9 @@ public abstract class SolrMetricReporter implements Closeable, PluginInfoInitial
* @param registryName registry to use, one of registries managed by
* {@link SolrMetricManager}
*/
- protected SolrMetricReporter(String registryName) {
+ protected SolrMetricReporter(SolrMetricManager metricManager, String registryName) {
this.registryName = registryName;
+ this.metricManager = metricManager;
}
/**
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
index 380bbaa..47fbf11 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
@@ -55,8 +55,8 @@ public class SolrJmxReporter extends SolrMetricReporter {
*
* @param registryName name of the registry to report
*/
- public SolrJmxReporter(String registryName) {
- super(registryName);
+ public SolrJmxReporter(SolrMetricManager metricManager, String registryName) {
+ super(metricManager, registryName);
setDomain(registryName);
}
@@ -99,7 +99,7 @@ public class SolrJmxReporter extends SolrMetricReporter {
JmxObjectNameFactory jmxObjectNameFactory = new JmxObjectNameFactory(pluginInfo.name, domain);
- reporter = JmxReporter.forRegistry(SolrMetricManager.registry(registryName))
+ reporter = JmxReporter.forRegistry(metricManager.registry(registryName))
.registerWith(mBeanServer)
.inDomain(domain)
.createsObjectNamesWith(jmxObjectNameFactory)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
index 2852041..dbc4b35 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
@@ -156,7 +156,6 @@ public class SolrDispatchFilter extends BaseSolrFilter {
excludePatterns.add(Pattern.compile(element));
}
}
- setupJvmMetrics();
try {
Properties extraProperties = (Properties) config.getServletContext().getAttribute(PROPERTIES_ATTRIBUTE);
if (extraProperties == null)
@@ -168,6 +167,7 @@ public class SolrDispatchFilter extends BaseSolrFilter {
this.cores = createCoreContainer(solrHome == null ? SolrResourceLoader.locateSolrHome() : Paths.get(solrHome),
extraProperties);
this.httpClient = cores.getUpdateShardHandler().getHttpClient();
+ setupJvmMetrics();
log.debug("user.dir=" + System.getProperty("user.dir"));
}
catch( Throwable t ) {
@@ -184,15 +184,15 @@ public class SolrDispatchFilter extends BaseSolrFilter {
private void setupJvmMetrics() {
MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
+ SolrMetricManager metricManager = cores.getMetricManager();
try {
String registry = SolrMetricManager.getRegistryName(SolrInfoMBean.Group.jvm);
- SolrMetricManager.registerAll(registry, new BufferPoolMetricSet(platformMBeanServer), true);
- SolrMetricManager.registerAll(registry, new BufferPoolMetricSet(platformMBeanServer), true);
- SolrMetricManager.registerAll(registry, new ClassLoadingGaugeSet(), true);
- SolrMetricManager.register(registry, new FileDescriptorRatioGauge(), true, "fileDescriptorRatio");
- SolrMetricManager.registerAll(registry, new GarbageCollectorMetricSet(), true);
- SolrMetricManager.registerAll(registry, new MemoryUsageGaugeSet(), true);
- SolrMetricManager.registerAll(registry, new ThreadStatesGaugeSet(), true); // todo should we use CachedThreadStatesGaugeSet instead?
+ metricManager.registerAll(registry, new BufferPoolMetricSet(platformMBeanServer), true, "bufferPools");
+ metricManager.registerAll(registry, new ClassLoadingGaugeSet(), true, "classLoading");
+ metricManager.register(registry, new FileDescriptorRatioGauge(), true, "fileDescriptorRatio");
+ metricManager.registerAll(registry, new GarbageCollectorMetricSet(), true, "gc");
+ metricManager.registerAll(registry, new MemoryUsageGaugeSet(), true, "memory");
+ metricManager.registerAll(registry, new ThreadStatesGaugeSet(), true, "threads"); // todo should we use CachedThreadStatesGaugeSet instead?
} catch (Exception e) {
log.warn("Error registering JVM metrics", e);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
index f532d54..65ffb93 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
@@ -39,18 +39,20 @@ import org.junit.Test;
public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
private static final int MAX_ITERATIONS = 100;
- private SolrCoreMetricManager metricManager;
+ private SolrCoreMetricManager coreMetricManager;
+ private SolrMetricManager metricManager;
@Before
public void beforeTest() throws Exception {
initCore("solrconfig-basic.xml", "schema.xml");
- metricManager = new SolrCoreMetricManager(h.getCore());
+ coreMetricManager = h.getCore().getCoreMetricManager();
+ metricManager = h.getCore().getCoreDescriptor().getCoreContainer().getMetricManager();
}
@After
public void afterTest() throws IOException {
- metricManager.close();
- assertTrue(SolrMetricManager.getReporters(metricManager.getRegistryName()).isEmpty());
+ coreMetricManager.close();
+ assertTrue(metricManager.getReporters(coreMetricManager.getRegistryName()).isEmpty());
deleteCore();
}
@@ -61,17 +63,17 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
String scope = SolrMetricTestUtils.getRandomScope(random);
SolrInfoMBean.Category category = SolrMetricTestUtils.getRandomCategory(random);
Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(random);
- SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(category, scope, metrics);
+ SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);
try {
- metricManager.registerMetricProducer(scope, producer);
+ coreMetricManager.registerMetricProducer(scope, producer);
assertNotNull(scope);
assertNotNull(category);
assertNotNull(metrics);
- assertRegistered(scope, metrics, metricManager);
+ assertRegistered(scope, metrics, coreMetricManager);
} catch (final IllegalArgumentException e) {
assertTrue("expected at least one null but got: scope="+scope+" category="+category+" metrics="+metrics,
(scope == null || category == null || metrics == null));
- assertRegistered(scope, new HashMap<>(), metricManager);
+ assertRegistered(scope, new HashMap<>(), coreMetricManager);
}
}
@@ -89,10 +91,10 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
if (metrics.isEmpty()) {
continue;
}
- SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(category, scope, metrics);
- metricManager.registerMetricProducer(scope, producer);
+ SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);
+ coreMetricManager.registerMetricProducer(scope, producer);
registered.putAll(metrics);
- assertRegistered(scope, registered, metricManager);
+ assertRegistered(scope, registered, coreMetricManager);
}
}
@@ -115,24 +117,24 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
PluginInfo pluginInfo = shouldDefinePlugin ? new PluginInfo(TestUtil.randomUnicodeString(random), attrs) : null;
try {
- SolrMetricManager.loadReporter(metricManager.getRegistryName(), metricManager.getCore().getResourceLoader(), pluginInfo);
+ metricManager.loadReporter(coreMetricManager.getRegistryName(), coreMetricManager.getCore().getResourceLoader(), pluginInfo);
assertNotNull(pluginInfo);
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters(metricManager.getRegistryName());
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters(coreMetricManager.getRegistryName());
assertTrue("reporters.size should be > 0, but was + " + reporters.size(), reporters.size() > 0);
assertNotNull("reporter " + reporterName + " not present among " + reporters, reporters.get(reporterName));
assertTrue("wrong reporter class: " + reporters.get(reporterName), reporters.get(reporterName) instanceof MockMetricReporter);
} catch (IllegalArgumentException e) {
assertTrue(pluginInfo == null || attrs.get("configurable") == null);
- assertNull(SolrMetricManager.getReporters(metricManager.getRegistryName()).get(reporterName));
+ assertNull(metricManager.getReporters(coreMetricManager.getRegistryName()).get(reporterName));
}
}
- private static void assertRegistered(String scope, Map<String, Counter> newMetrics, SolrCoreMetricManager metricManager) {
+ private void assertRegistered(String scope, Map<String, Counter> newMetrics, SolrCoreMetricManager coreMetricManager) {
if (scope == null) {
return;
}
String filter = "." + scope + ".";
- MetricRegistry registry = SolrMetricManager.registry(metricManager.getRegistryName());
+ MetricRegistry registry = metricManager.registry(coreMetricManager.getRegistryName());
assertEquals(newMetrics.size(), registry.getMetrics().
keySet().stream().filter(s -> s.contains(filter)).count());
@@ -159,12 +161,12 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
String cloudRegistryName = "solr.core." + cloudCoreName;
String nestedRegistryName = "solr.core.my_collection_.shard1_0.replica0";
// pass through
- assertEquals(cloudRegistryName, metricManager.createRegistryName(null, cloudCoreName));
- assertEquals(simpleRegistryName, metricManager.createRegistryName(null, simpleCoreName));
+ assertEquals(cloudRegistryName, coreMetricManager.createRegistryName(null, cloudCoreName));
+ assertEquals(simpleRegistryName, coreMetricManager.createRegistryName(null, simpleCoreName));
// unknown naming scheme -> pass through
- assertEquals(simpleRegistryName, metricManager.createRegistryName(collectionName, simpleCoreName));
+ assertEquals(simpleRegistryName, coreMetricManager.createRegistryName(collectionName, simpleCoreName));
// cloud collection
- assertEquals(nestedRegistryName, metricManager.createRegistryName(collectionName, cloudCoreName));
+ assertEquals(nestedRegistryName, coreMetricManager.createRegistryName(collectionName, cloudCoreName));
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
index 2886016..ecddfba 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
@@ -54,23 +54,25 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
public void testMoveMetrics() throws Exception {
Random r = random();
+ SolrMetricManager metricManager = new SolrMetricManager();
+
Map<String, Counter> metrics1 = SolrMetricTestUtils.getRandomMetrics(r, true);
Map<String, Counter> metrics2 = SolrMetricTestUtils.getRandomMetrics(r, true);
String fromName = TestUtil.randomSimpleString(r, 1, 10);
String toName = TestUtil.randomSimpleString(r, 1, 10);
// register test metrics
for (Map.Entry<String, Counter> entry : metrics1.entrySet()) {
- SolrMetricManager.register(fromName, entry.getValue(), false, entry.getKey(), "metrics1");
+ metricManager.register(fromName, entry.getValue(), false, entry.getKey(), "metrics1");
}
for (Map.Entry<String, Counter> entry : metrics2.entrySet()) {
- SolrMetricManager.register(fromName, entry.getValue(), false, entry.getKey(), "metrics2");
+ metricManager.register(fromName, entry.getValue(), false, entry.getKey(), "metrics2");
}
- assertEquals(metrics1.size() + metrics2.size(), SolrMetricManager.registry(fromName).getMetrics().size());
+ assertEquals(metrics1.size() + metrics2.size(), metricManager.registry(fromName).getMetrics().size());
// move metrics1
- SolrMetricManager.moveMetrics(fromName, toName, new SolrMetricManager.PrefixFilter("metrics1"));
+ metricManager.moveMetrics(fromName, toName, new SolrMetricManager.PrefixFilter("metrics1"));
// check the remaining metrics
- Map<String, Metric> fromMetrics = SolrMetricManager.registry(fromName).getMetrics();
+ Map<String, Metric> fromMetrics = metricManager.registry(fromName).getMetrics();
assertEquals(metrics2.size(), fromMetrics.size());
for (Map.Entry<String, Counter> entry : metrics2.entrySet()) {
Object value = fromMetrics.get(SolrMetricManager.mkName(entry.getKey(), "metrics2"));
@@ -78,7 +80,7 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
assertEquals(entry.getValue(), value);
}
// check the moved metrics
- Map<String, Metric> toMetrics = SolrMetricManager.registry(toName).getMetrics();
+ Map<String, Metric> toMetrics = metricManager.registry(toName).getMetrics();
assertEquals(metrics1.size(), toMetrics.size());
for (Map.Entry<String, Counter> entry : metrics1.entrySet()) {
Object value = toMetrics.get(SolrMetricManager.mkName(entry.getKey(), "metrics1"));
@@ -87,10 +89,10 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
}
// move all remaining metrics
- SolrMetricManager.moveMetrics(fromName, toName, null);
- fromMetrics = SolrMetricManager.registry(fromName).getMetrics();
+ metricManager.moveMetrics(fromName, toName, null);
+ fromMetrics = metricManager.registry(fromName).getMetrics();
assertEquals(0, fromMetrics.size());
- toMetrics = SolrMetricManager.registry(toName).getMetrics();
+ toMetrics = metricManager.registry(toName).getMetrics();
assertEquals(metrics1.size() + metrics2.size(), toMetrics.size());
}
@@ -98,6 +100,8 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
public void testRegisterAll() throws Exception {
Random r = random();
+ SolrMetricManager metricManager = new SolrMetricManager();
+
Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(r, true);
MetricRegistry mr = new MetricRegistry();
for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
@@ -105,13 +109,13 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
}
String registryName = TestUtil.randomSimpleString(r, 1, 10);
- assertEquals(0, SolrMetricManager.registry(registryName).getMetrics().size());
- SolrMetricManager.registerAll(registryName, mr, false);
+ assertEquals(0, metricManager.registry(registryName).getMetrics().size());
+ metricManager.registerAll(registryName, mr, false);
// this should simply skip existing names
- SolrMetricManager.registerAll(registryName, mr, true);
+ metricManager.registerAll(registryName, mr, true);
// this should produce error
try {
- SolrMetricManager.registerAll(registryName, mr, false);
+ metricManager.registerAll(registryName, mr, false);
fail("registerAll with duplicate metric names should fail");
} catch (IllegalArgumentException e) {
// expected
@@ -122,34 +126,36 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
public void testClearMetrics() throws Exception {
Random r = random();
+ SolrMetricManager metricManager = new SolrMetricManager();
+
Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(r, true);
String registryName = TestUtil.randomSimpleString(r, 1, 10);
for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
- SolrMetricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo", "bar");
+ metricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo", "bar");
}
for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
- SolrMetricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo", "baz");
+ metricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo", "baz");
}
for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
- SolrMetricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo");
+ metricManager.register(registryName, entry.getValue(), false, entry.getKey(), "foo");
}
- assertEquals(metrics.size() * 3, SolrMetricManager.registry(registryName).getMetrics().size());
+ assertEquals(metrics.size() * 3, metricManager.registry(registryName).getMetrics().size());
// clear "foo.bar"
- Set<String> removed = SolrMetricManager.clearMetrics(registryName, "foo", "bar");
+ Set<String> removed = metricManager.clearMetrics(registryName, "foo", "bar");
assertEquals(metrics.size(), removed.size());
for (String s : removed) {
assertTrue(s.startsWith("foo.bar."));
}
- removed = SolrMetricManager.clearMetrics(registryName, "foo", "baz");
+ removed = metricManager.clearMetrics(registryName, "foo", "baz");
assertEquals(metrics.size(), removed.size());
for (String s : removed) {
assertTrue(s.startsWith("foo.baz."));
}
// perhaps surprisingly, this works too - see PrefixFilter docs
- removed = SolrMetricManager.clearMetrics(registryName, "fo");
+ removed = metricManager.clearMetrics(registryName, "fo");
assertEquals(metrics.size(), removed.size());
for (String s : removed) {
assertTrue(s.startsWith("foo."));
@@ -160,13 +166,15 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
public void testSimpleMetrics() throws Exception {
Random r = random();
+ SolrMetricManager metricManager = new SolrMetricManager();
+
String registryName = TestUtil.randomSimpleString(r, 1, 10);
- SolrMetricManager.counter(registryName, "simple_counter", "foo", "bar");
- SolrMetricManager.timer(registryName, "simple_timer", "foo", "bar");
- SolrMetricManager.meter(registryName, "simple_meter", "foo", "bar");
- SolrMetricManager.histogram(registryName, "simple_histogram", "foo", "bar");
- Map<String, Metric> metrics = SolrMetricManager.registry(registryName).getMetrics();
+ metricManager.counter(registryName, "simple_counter", "foo", "bar");
+ metricManager.timer(registryName, "simple_timer", "foo", "bar");
+ metricManager.meter(registryName, "simple_meter", "foo", "bar");
+ metricManager.histogram(registryName, "simple_histogram", "foo", "bar");
+ Map<String, Metric> metrics = metricManager.registry(registryName).getMetrics();
assertEquals(4, metrics.size());
for (Map.Entry<String, Metric> entry : metrics.entrySet()) {
assertTrue(entry.getKey().startsWith("foo.bar.simple_"));
@@ -194,6 +202,7 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
Random r = random();
SolrResourceLoader loader = new SolrResourceLoader();
+ SolrMetricManager metricManager = new SolrMetricManager();
PluginInfo[] plugins = new PluginInfo[] {
createPluginInfo("universal_foo", null, null),
@@ -204,8 +213,8 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
createPluginInfo("core_foo", "core", null)
};
- SolrMetricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.node);
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters(
+ metricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.node);
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node));
assertEquals(4, reporters.size());
assertTrue(reporters.containsKey("universal_foo"));
@@ -213,8 +222,8 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
assertTrue(reporters.containsKey("node_foo"));
assertTrue(reporters.containsKey("multiregistry_foo"));
- SolrMetricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.core, "collection1");
- reporters = SolrMetricManager.getReporters(
+ metricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.core, "collection1");
+ reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, "collection1"));
assertEquals(5, reporters.size());
assertTrue(reporters.containsKey("universal_foo"));
@@ -223,25 +232,25 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
assertTrue(reporters.containsKey("core_foo"));
assertTrue(reporters.containsKey("multiregistry_foo"));
- SolrMetricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.jvm);
- reporters = SolrMetricManager.getReporters(
+ metricManager.loadReporters(plugins, loader, SolrInfoMBean.Group.jvm);
+ reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.jvm));
assertEquals(2, reporters.size());
assertTrue(reporters.containsKey("universal_foo"));
assertTrue(reporters.containsKey("multigroup_foo"));
- SolrMetricManager.removeRegistry("solr.jvm");
- reporters = SolrMetricManager.getReporters(
+ metricManager.removeRegistry("solr.jvm");
+ reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.jvm));
assertEquals(0, reporters.size());
- SolrMetricManager.removeRegistry("solr.node");
- reporters = SolrMetricManager.getReporters(
+ metricManager.removeRegistry("solr.node");
+ reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node));
assertEquals(0, reporters.size());
- SolrMetricManager.removeRegistry("solr.core.collection1");
- reporters = SolrMetricManager.getReporters(
+ metricManager.removeRegistry("solr.core.collection1");
+ reporters = metricManager.getReporters(
SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, "collection1"));
assertEquals(0, reporters.size());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/SolrMetricReporterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricReporterTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricReporterTest.java
index 0cbf009..b275919 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricReporterTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricReporterTest.java
@@ -34,8 +34,10 @@ public class SolrMetricReporterTest extends LuceneTestCase {
public void testInit() throws Exception {
Random random = random();
+ SolrMetricManager metricManager = new SolrMetricManager();
+
final String registryName = TestUtil.randomSimpleString(random);
- final MockMetricReporter reporter = new MockMetricReporter(registryName);
+ final MockMetricReporter reporter = new MockMetricReporter(metricManager, registryName);
Map<String, Object> attrs = new HashMap<>();
attrs.put(FieldType.CLASS_NAME, MockMetricReporter.class.getName());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
index f8ca6d7..44ae9db 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
@@ -79,15 +79,15 @@ public final class SolrMetricTestUtils {
return metrics;
}
- public static SolrMetricProducer getProducerOf(SolrInfoMBean.Category category, String scope, Map<String, Counter> metrics) {
+ public static SolrMetricProducer getProducerOf(SolrMetricManager metricManager, SolrInfoMBean.Category category, String scope, Map<String, Counter> metrics) {
return new SolrMetricProducer() {
@Override
- public Collection<String> initializeMetrics(String registry, String scope) {
+ public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
if (metrics == null || metrics.isEmpty()) {
return Collections.emptyList();
}
for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
- SolrMetricManager.counter(registry, entry.getKey(), category.toString(), scope);
+ manager.counter(registry, entry.getKey(), category.toString(), scope);
}
return metrics.keySet();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
index 67a073b..c6449ac 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
@@ -54,6 +54,7 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
private static final SolrInfoMBean.Category HANDLER_CATEGORY = SolrInfoMBean.Category.QUERYHANDLER;
private CoreContainer cc;
+ private SolrMetricManager metricManager;
@Before
public void beforeTest() throws Exception {
@@ -66,8 +67,9 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
cc = createCoreContainer(cfg,
new TestHarness.TestCoresLocator(DEFAULT_TEST_CORENAME, initCoreDataDir.getAbsolutePath(), "solrconfig.xml", "schema.xml"));
h.coreName = DEFAULT_TEST_CORENAME;
+ metricManager = cc.getMetricManager();
// initially there are more reporters, because two of them are added via a matching collection name
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters("solr.core." + DEFAULT_TEST_CORENAME);
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters("solr.core." + DEFAULT_TEST_CORENAME);
assertEquals(INITIAL_REPORTERS.length, reporters.size());
assertTrue(reporters.keySet().containsAll(Arrays.asList(INITIAL_REPORTERS)));
// test rename operation
@@ -77,7 +79,7 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
PluginInfo[] plugins = cfg.getMetricReporterPlugins();
assertNotNull(plugins);
assertEquals(10, plugins.length);
- reporters = SolrMetricManager.getReporters("solr.node");
+ reporters = metricManager.getReporters("solr.node");
assertEquals(4, reporters.size());
assertTrue("Reporter '" + REPORTER_NAMES[0] + "' missing in solr.node", reporters.containsKey(REPORTER_NAMES[0]));
assertTrue("Reporter '" + UNIVERSAL + "' missing in solr.node", reporters.containsKey(UNIVERSAL));
@@ -93,8 +95,8 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
@After
public void afterTest() throws Exception {
- SolrCoreMetricManager metricManager = h.getCore().getMetricManager();
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters(metricManager.getRegistryName());
+ SolrCoreMetricManager coreMetricManager = h.getCore().getCoreMetricManager();
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters(coreMetricManager.getRegistryName());
deleteCore();
@@ -110,8 +112,8 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
Random random = random();
String metricName = SolrMetricManager.mkName(METRIC_NAME, HANDLER_CATEGORY.toString(), HANDLER_NAME);
- SolrCoreMetricManager metricManager = h.getCore().getMetricManager();
- Timer timer = (Timer) SolrMetricManager.timer(metricManager.getRegistryName(), metricName);
+ SolrCoreMetricManager coreMetricManager = h.getCore().getCoreMetricManager();
+ Timer timer = (Timer) metricManager.timer(coreMetricManager.getRegistryName(), metricName);
long initialCount = timer.getCount();
@@ -122,7 +124,7 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
long finalCount = timer.getCount();
assertEquals("metric counter incorrect", iterations, finalCount - initialCount);
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters(metricManager.getRegistryName());
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters(coreMetricManager.getRegistryName());
assertEquals(RENAMED_REPORTERS.length, reporters.size());
// SPECIFIC and MULTIREGISTRY were skipped because they were
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/reporters/MockMetricReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/MockMetricReporter.java b/solr/core/src/test/org/apache/solr/metrics/reporters/MockMetricReporter.java
index 4d5ef69..2ecc33b 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/MockMetricReporter.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/MockMetricReporter.java
@@ -34,8 +34,8 @@ public class MockMetricReporter extends SolrMetricReporter {
public boolean didClose = false;
public boolean didValidate = false;
- public MockMetricReporter(String registryName) {
- super(registryName);
+ public MockMetricReporter(SolrMetricManager metricManager, String registryName) {
+ super(metricManager, registryName);
}
@Override
@@ -62,7 +62,7 @@ public class MockMetricReporter extends SolrMetricReporter {
}
public Metric reportMetric(String metricName) throws NoSuchElementException {
- MetricRegistry registry = SolrMetricManager.registry(registryName);
+ MetricRegistry registry = metricManager.registry(registryName);
Metric metric = registry.getMetrics().get(metricName);
if (metric == null) {
throw new NoSuchElementException("Metric was not found for metric name = " + metricName);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
index 607296e..ea452b2 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
@@ -48,7 +48,8 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
private String domain;
- private SolrCoreMetricManager metricManager;
+ private SolrCoreMetricManager coreMetricManager;
+ private SolrMetricManager metricManager;
private SolrJmxReporter reporter;
private MBeanServer mBeanServer;
private String reporterName;
@@ -60,11 +61,12 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
final SolrCore core = h.getCore();
domain = core.getName();
- metricManager = new SolrCoreMetricManager(core);
+ coreMetricManager = core.getCoreMetricManager();
+ metricManager = core.getCoreDescriptor().getCoreContainer().getMetricManager();
PluginInfo pluginInfo = createReporterPluginInfo();
- SolrMetricManager.loadReporter(metricManager.getRegistryName(), metricManager.getCore().getResourceLoader(), pluginInfo);
+ metricManager.loadReporter(coreMetricManager.getRegistryName(), coreMetricManager.getCore().getResourceLoader(), pluginInfo);
- Map<String, SolrMetricReporter> reporters = SolrMetricManager.getReporters(metricManager.getRegistryName());
+ Map<String, SolrMetricReporter> reporters = metricManager.getReporters(coreMetricManager.getRegistryName());
assertTrue("reporters.size should be > 0, but was + " + reporters.size(), reporters.size() > 0);
reporterName = pluginInfo.name;
assertNotNull("reporter " + reporterName + " not present among " + reporters, reporters.get(reporterName));
@@ -95,12 +97,12 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
@After
public void afterTest() throws Exception {
- SolrMetricManager.closeReporters(metricManager.getRegistryName());
+ metricManager.closeReporters(coreMetricManager.getRegistryName());
Set<ObjectInstance> objects =
mBeanServer.queryMBeans(ObjectName.getInstance(domain + ":*"), null);
assertTrue(objects.isEmpty());
- metricManager.close();
+ coreMetricManager.close();
deleteCore();
}
@@ -115,8 +117,8 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
int iterations = TestUtil.nextInt(random, 0, MAX_ITERATIONS);
for (int i = 0; i < iterations; ++i) {
Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetricsWithReplacements(random, registered);
- SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(category, scope, metrics);
- metricManager.registerMetricProducer(scope, producer);
+ SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);
+ coreMetricManager.registerMetricProducer(scope, producer);
registered.putAll(metrics);
//waitForListener();
Set<ObjectInstance> objects = mBeanServer.queryMBeans(null, null);
@@ -133,8 +135,8 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
String scope = SolrMetricTestUtils.getRandomScope(random, true);
SolrInfoMBean.Category category = SolrMetricTestUtils.getRandomCategory(random, true);
Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(random, true);
- SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(category, scope, metrics);
- metricManager.registerMetricProducer(scope, producer);
+ SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);
+ coreMetricManager.registerMetricProducer(scope, producer);
Set<ObjectInstance> objects = mBeanServer.queryMBeans(null, null);
assertEquals(metrics.size(), objects.stream().
filter(o -> scope.equals(o.getObjectName().getKeyProperty("scope")) &&
@@ -142,8 +144,8 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
h.getCoreContainer().reload(h.getCore().getName());
PluginInfo pluginInfo = createReporterPluginInfo();
- SolrMetricManager.loadReporter(metricManager.getRegistryName(), metricManager.getCore().getResourceLoader(), pluginInfo);
- metricManager.registerMetricProducer(scope, producer);
+ metricManager.loadReporter(coreMetricManager.getRegistryName(), coreMetricManager.getCore().getResourceLoader(), pluginInfo);
+ coreMetricManager.registerMetricProducer(scope, producer);
objects = mBeanServer.queryMBeans(null, null);
assertEquals(metrics.size(), objects.stream().
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/adfb4a50/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
index 66992a7..4e6f6d6 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
@@ -192,21 +192,17 @@ public class TestHarness extends BaseTestHarness {
= new UpdateShardHandlerConfig(UpdateShardHandlerConfig.DEFAULT_MAXUPDATECONNECTIONS,
UpdateShardHandlerConfig.DEFAULT_MAXUPDATECONNECTIONSPERHOST,
30000, 30000);
- // metric reporters
+ // universal default metric reporter
Map<String,String> attributes = new HashMap<>();
- attributes.put("group", SolrInfoMBean.Group.core.toString());
attributes.put("name", "default");
attributes.put("class", SolrJmxReporter.class.getName());
- PluginInfo corePlugin = new PluginInfo("reporter", attributes, null, null);
- attributes = new HashMap<>(attributes);
- attributes.put("group", SolrInfoMBean.Group.node.toString());
- PluginInfo nodePlugin = new PluginInfo("reporter", attributes, null, null);
+ PluginInfo defaultPlugin = new PluginInfo("reporter", attributes, null, null);
return new NodeConfig.NodeConfigBuilder("testNode", loader)
.setUseSchemaCache(Boolean.getBoolean("shareSchema"))
.setCloudConfig(cloudConfig)
.setUpdateShardHandlerConfig(updateShardHandlerConfig)
- .setMetricReporterPlugins(new PluginInfo[] {corePlugin, nodePlugin})
+ .setMetricReporterPlugins(new PluginInfo[] {defaultPlugin})
.build();
}