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 2017/03/15 17:03:14 UTC
[3/4] lucene-solr:jira/solr-9959: SOLR-9959 Rename SolrInfoMBean ->
SolrInfoBean.
SOLR-9959 Rename SolrInfoMBean -> SolrInfoBean.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/1624ed75
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/1624ed75
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/1624ed75
Branch: refs/heads/jira/solr-9959
Commit: 1624ed75baf123bac7eeae602c33059e3a25d288
Parents: 15af818
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Mar 15 15:21:42 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Mar 15 15:21:42 2017 +0100
----------------------------------------------------------------------
lucene/tools/junit4/cached-timehints.txt | 2 +-
.../org/apache/solr/core/CoreContainer.java | 40 +--
.../org/apache/solr/core/DirectoryFactory.java | 2 +-
.../apache/solr/core/HdfsDirectoryFactory.java | 4 +-
.../java/org/apache/solr/core/PluginBag.java | 4 +-
.../src/java/org/apache/solr/core/SolrCore.java | 26 +-
.../java/org/apache/solr/core/SolrInfoBean.java | 59 ++++
.../org/apache/solr/core/SolrInfoMBean.java | 61 ----
.../apache/solr/core/SolrInfoMBeanWrapper.java | 50 ----
.../apache/solr/core/SolrResourceLoader.java | 18 +-
.../apache/solr/handler/RequestHandlerBase.java | 5 +-
.../solr/handler/admin/PluginInfoHandler.java | 10 +-
.../solr/handler/admin/SolrInfoBeanHandler.java | 291 ++++++++++++++++++
.../handler/admin/SolrInfoMBeanHandler.java | 294 -------------------
.../solr/handler/component/DebugComponent.java | 2 +-
.../solr/handler/component/ExpandComponent.java | 2 +-
.../solr/handler/component/FacetComponent.java | 2 +-
.../handler/component/HighlightComponent.java | 2 +-
.../component/HttpShardHandlerFactory.java | 4 +-
.../component/MoreLikeThisComponent.java | 2 +-
.../solr/handler/component/QueryComponent.java | 2 +-
.../component/QueryElevationComponent.java | 2 +-
.../handler/component/RealTimeGetComponent.java | 2 +-
.../solr/handler/component/SearchComponent.java | 5 +-
.../handler/component/SpellCheckComponent.java | 2 +-
.../solr/handler/component/StatsComponent.java | 2 +-
.../solr/highlight/HighlightingPluginBase.java | 6 +-
.../solr/highlight/SolrBoundaryScanner.java | 4 +-
.../org/apache/solr/highlight/SolrEncoder.java | 4 +-
.../apache/solr/highlight/SolrFormatter.java | 4 +-
.../solr/highlight/SolrFragListBuilder.java | 4 +-
.../apache/solr/highlight/SolrFragmenter.java | 4 +-
.../solr/highlight/SolrFragmentsBuilder.java | 4 +-
.../solr/metrics/SolrCoreMetricManager.java | 12 +-
.../org/apache/solr/metrics/SolrMetricInfo.java | 10 +-
.../apache/solr/metrics/SolrMetricManager.java | 26 +-
.../reporters/solr/SolrClusterReporter.java | 10 +-
.../apache/solr/request/SolrRequestHandler.java | 4 +-
.../org/apache/solr/search/QParserPlugin.java | 5 +-
.../java/org/apache/solr/search/SolrCache.java | 4 +-
.../org/apache/solr/search/SolrCacheBase.java | 2 +-
.../apache/solr/search/SolrFieldCacheBean.java | 68 +++++
.../apache/solr/search/SolrFieldCacheMBean.java | 68 -----
.../apache/solr/search/SolrIndexSearcher.java | 9 +-
.../apache/solr/servlet/SolrDispatchFilter.java | 4 +-
.../apache/solr/store/blockcache/Metrics.java | 9 +-
.../solr/store/hdfs/HdfsLocalityReporter.java | 5 +-
.../solr/update/DirectUpdateHandler2.java | 2 +-
.../org/apache/solr/update/HdfsUpdateLog.java | 4 +-
.../java/org/apache/solr/update/PeerSync.java | 4 +-
.../org/apache/solr/update/SolrIndexWriter.java | 26 +-
.../org/apache/solr/update/UpdateHandler.java | 4 +-
.../java/org/apache/solr/update/UpdateLog.java | 4 +-
.../apache/solr/update/UpdateShardHandler.java | 5 +-
.../test/org/apache/solr/CursorPagingTest.java | 6 +-
.../test/org/apache/solr/SolrInfoBeanTest.java | 117 ++++++++
.../test/org/apache/solr/SolrInfoMBeanTest.java | 117 --------
.../cloud/CollectionsAPIDistributedZkTest.java | 2 +-
.../solr/core/ExitableDirectoryReaderTest.java | 6 +-
.../solr/core/HdfsDirectoryFactoryTest.java | 4 +-
.../test/org/apache/solr/core/MockInfoBean.java | 51 ++++
.../org/apache/solr/core/MockInfoMBean.java | 53 ----
.../test/org/apache/solr/core/SolrCoreTest.java | 6 +-
.../solr/handler/admin/MBeansHandlerTest.java | 8 +-
.../solr/handler/admin/StatsReloadRaceTest.java | 2 +-
.../solr/metrics/SolrCoreMetricManagerTest.java | 6 +-
.../solr/metrics/SolrMetricManagerTest.java | 26 +-
.../solr/metrics/SolrMetricTestUtils.java | 10 +-
.../metrics/SolrMetricsIntegrationTest.java | 4 +-
.../metrics/reporters/SolrJmxReporterTest.java | 6 +-
.../solr/search/TestReRankQParserPlugin.java | 4 +-
.../solr/search/TestSolrFieldCacheMBean.java | 4 +-
.../apache/solr/search/TestSolrQueryParser.java | 6 +-
73 files changed, 791 insertions(+), 857 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/lucene/tools/junit4/cached-timehints.txt
----------------------------------------------------------------------
diff --git a/lucene/tools/junit4/cached-timehints.txt b/lucene/tools/junit4/cached-timehints.txt
index f2b8974..cb3da99 100644
--- a/lucene/tools/junit4/cached-timehints.txt
+++ b/lucene/tools/junit4/cached-timehints.txt
@@ -813,7 +813,7 @@ org.apache.solr.EchoParamsTest=136,170,349,124,140,142,284
org.apache.solr.MinimalSchemaTest=304,316,467,304,297,755,309
org.apache.solr.OutputWriterTest=302,276,265,314,244,211,268
org.apache.solr.SampleTest=339,290,266,243,333,414,355
-org.apache.solr.SolrInfoMBeanTest=1090,1132,644,629,637,1023,735
+org.apache.solr.SolrInfoBeanTest=1090,1132,644,629,637,1023,735
org.apache.solr.TestDistributedGrouping=13095,9478,8420,9633,10692,9265,10893
org.apache.solr.TestDistributedSearch=11199,9886,16211,11367,11325,10717,10392
org.apache.solr.TestDocumentBuilder=10,10,9,13,10,9,10
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/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 9e22f91..22fcd74 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -480,17 +480,17 @@ public class CoreContainer {
coreContainerWorkExecutor = MetricUtils.instrumentedExecutorService(
coreContainerWorkExecutor,
- metricManager.registry(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node)),
- SolrMetricManager.mkName("coreContainerWorkExecutor", SolrInfoMBean.Category.CONTAINER.toString(), "threadPool"));
+ metricManager.registry(SolrMetricManager.getRegistryName(SolrInfoBean.Group.node)),
+ SolrMetricManager.mkName("coreContainerWorkExecutor", SolrInfoBean.Category.CONTAINER.toString(), "threadPool"));
shardHandlerFactory = ShardHandlerFactory.newInstance(cfg.getShardHandlerFactoryPluginInfo(), loader);
if (shardHandlerFactory instanceof SolrMetricProducer) {
SolrMetricProducer metricProducer = (SolrMetricProducer) shardHandlerFactory;
- metricProducer.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), "httpShardHandler");
+ metricProducer.initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), "httpShardHandler");
}
updateShardHandler = new UpdateShardHandler(cfg.getUpdateShardHandlerConfig());
- updateShardHandler.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), "updateShardHandler");
+ updateShardHandler.initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), "updateShardHandler");
solrCores.allocateLazyCores(cfg.getTransientCacheSize(), loader);
@@ -517,14 +517,14 @@ public class CoreContainer {
// may want to add some configuration here in the future
metricsCollectorHandler.init(null);
containerHandlers.put(AUTHZ_PATH, securityConfHandler);
- securityConfHandler.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), AUTHZ_PATH);
+ securityConfHandler.initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), AUTHZ_PATH);
containerHandlers.put(AUTHC_PATH, securityConfHandler);
if(pkiAuthenticationPlugin != null)
containerHandlers.put(PKIAuthenticationPlugin.PATH, pkiAuthenticationPlugin.getRequestHandler());
- metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoMBean.Group.node);
- metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoMBean.Group.jvm);
- metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoMBean.Group.jetty);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoBean.Group.node);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoBean.Group.jvm);
+ metricManager.loadReporters(cfg.getMetricReporterPlugins(), loader, null, SolrInfoBean.Group.jetty);
coreConfigService = ConfigSetService.createConfigSetService(cfg, loader, zkSys.zkController);
@@ -532,17 +532,17 @@ public class CoreContainer {
// initialize gauges for reporting the number of cores and disk total/free
- String registryName = SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node);
+ String registryName = SolrMetricManager.getRegistryName(SolrInfoBean.Group.node);
metricManager.registerGauge(registryName, () -> solrCores.getCores().size(),
- true, "loaded", SolrInfoMBean.Category.CONTAINER.toString(), "cores");
+ true, "loaded", SolrInfoBean.Category.CONTAINER.toString(), "cores");
metricManager.registerGauge(registryName, () -> solrCores.getCoreNames().size() - solrCores.getCores().size(),
- true, "lazy",SolrInfoMBean.Category.CONTAINER.toString(), "cores");
+ true, "lazy", SolrInfoBean.Category.CONTAINER.toString(), "cores");
metricManager.registerGauge(registryName, () -> solrCores.getAllCoreNames().size() - solrCores.getCoreNames().size(),
- true, "unloaded",SolrInfoMBean.Category.CONTAINER.toString(), "cores");
+ true, "unloaded", SolrInfoBean.Category.CONTAINER.toString(), "cores");
metricManager.registerGauge(registryName, () -> cfg.getCoreRootDirectory().toFile().getTotalSpace(),
- true, "totalSpace", SolrInfoMBean.Category.CONTAINER.toString(), "fs");
+ true, "totalSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs");
metricManager.registerGauge(registryName, () -> cfg.getCoreRootDirectory().toFile().getUsableSpace(),
- true, "usableSpace", SolrInfoMBean.Category.CONTAINER.toString(), "fs");
+ true, "usableSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs");
if (isZooKeeperAware()) {
metricManager.loadClusterReporters(cfg.getMetricReporterPlugins(), this);
@@ -553,8 +553,8 @@ public class CoreContainer {
ExecutorUtil.newMDCAwareFixedThreadPool(
cfg.getCoreLoadThreadCount(isZooKeeperAware()),
new DefaultSolrThreadFactory("coreLoadExecutor")),
- metricManager.registry(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node)),
- SolrMetricManager.mkName("coreLoadExecutor",SolrInfoMBean.Category.CONTAINER.toString(), "threadPool"));
+ metricManager.registry(SolrMetricManager.getRegistryName(SolrInfoBean.Group.node)),
+ SolrMetricManager.mkName("coreLoadExecutor", SolrInfoBean.Category.CONTAINER.toString(), "threadPool"));
final List<Future<SolrCore>> futures = new ArrayList<>();
try {
List<CoreDescriptor> cds = coresLocator.discover(this);
@@ -672,14 +672,14 @@ public class CoreContainer {
ExecutorUtil.shutdownAndAwaitTermination(coreContainerWorkExecutor);
if (metricManager != null) {
- metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node));
+ metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoBean.Group.node));
}
if (isZooKeeperAware()) {
cancelCoreRecoveries();
zkSys.zkController.publishNodeAsDown(zkSys.zkController.getNodeName());
if (metricManager != null) {
- metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoMBean.Group.cluster));
+ metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoBean.Group.cluster));
}
}
@@ -1044,7 +1044,7 @@ public class CoreContainer {
private void resetIndexDirectory(CoreDescriptor dcore, ConfigSet coreConfig) {
SolrConfig config = coreConfig.getSolrConfig();
- String registryName = SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, dcore.getName());
+ String registryName = SolrMetricManager.getRegistryName(SolrInfoBean.Group.core, dcore.getName());
DirectoryFactory df = DirectoryFactory.loadDirectoryFactory(config, this, registryName);
String dataDir = SolrCore.findDataDir(df, null, config, dcore);
@@ -1362,7 +1362,7 @@ public class CoreContainer {
containerHandlers.put(path, (SolrRequestHandler)handler);
}
if (handler instanceof SolrMetricProducer) {
- ((SolrMetricProducer)handler).initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), path);
+ ((SolrMetricProducer)handler).initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), path);
}
return handler;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
index cc24e6c..b4baefa 100644
--- a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
@@ -324,7 +324,7 @@ public abstract class DirectoryFactory implements NamedListInitializedPlugin,
/**
* Optionally allow the DirectoryFactory to request registration of some MBeans.
*/
- public Collection<SolrInfoMBean> offerMBeans() {
+ public Collection<SolrInfoBean> offerMBeans() {
return Collections.emptySet();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
index db953d3..eb8d41e 100644
--- a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
@@ -493,8 +493,8 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory implements Sol
}
@Override
- public Collection<SolrInfoMBean> offerMBeans() {
- return Arrays.<SolrInfoMBean>asList(MetricsHolder.metrics, LocalityHolder.reporter);
+ public Collection<SolrInfoBean> offerMBeans() {
+ return Arrays.<SolrInfoBean>asList(MetricsHolder.metrics, LocalityHolder.reporter);
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/PluginBag.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 65978f3..b916ad2 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -294,8 +294,8 @@ public class PluginBag<T> implements AutoCloseable {
private void registerMBean(Object inst, SolrCore core, String pluginKey) {
if (core == null) return;
- if (inst instanceof SolrInfoMBean) {
- SolrInfoMBean mBean = (SolrInfoMBean) inst;
+ if (inst instanceof SolrInfoBean) {
+ SolrInfoBean mBean = (SolrInfoBean) inst;
String name = (inst instanceof SolrRequestHandler) ? pluginKey : mBean.getName();
core.registerInfoBean(name, mBean);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/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 b657cc0..58b53ad 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -132,7 +132,7 @@ import org.apache.solr.schema.IndexSchemaFactory;
import org.apache.solr.schema.ManagedIndexSchema;
import org.apache.solr.schema.SimilarityFactory;
import org.apache.solr.search.QParserPlugin;
-import org.apache.solr.search.SolrFieldCacheMBean;
+import org.apache.solr.search.SolrFieldCacheBean;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.ValueSourceParser;
import org.apache.solr.search.stats.LocalStatsCache;
@@ -170,7 +170,7 @@ import static org.apache.solr.common.params.CommonParams.PATH;
/**
*
*/
-public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closeable {
+public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeable {
public static final String version="1.0";
@@ -201,7 +201,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
private final PluginBag<UpdateRequestProcessorFactory> updateProcessors = new PluginBag<>(UpdateRequestProcessorFactory.class, this, true);
private final Map<String,UpdateRequestProcessorChain> updateProcessorChains;
private final SolrCoreMetricManager coreMetricManager;
- private final Map<String, SolrInfoMBean> infoRegistry = new ConcurrentHashMap<>();
+ private final Map<String, SolrInfoBean> infoRegistry = new ConcurrentHashMap<>();
private final IndexDeletionPolicyWrapper solrDelPolicy;
private final SolrSnapshotMetaDataManager snapshotMgr;
private final DirectoryFactory directoryFactory;
@@ -447,14 +447,14 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
}
/**
- * Returns a Map of name vs SolrInfoMBean objects. The returned map is an instance of
+ * Returns a Map of name vs SolrInfoBean objects. The returned map is an instance of
* a ConcurrentHashMap and therefore no synchronization is needed for putting, removing
* or iterating over it.
*
- * @return the Info Registry map which contains SolrInfoMBean objects keyed by name
+ * @return the Info Registry map which contains SolrInfoBean objects keyed by name
* @since solr 1.3
*/
- public Map<String, SolrInfoMBean> getInfoRegistry() {
+ public Map<String, SolrInfoBean> getInfoRegistry() {
return infoRegistry;
}
@@ -904,7 +904,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
// initialize searcher-related metrics
initializeMetrics(metricManager, coreMetricManager.getRegistryName(), null);
- infoRegistry.put("fieldCache", new SolrFieldCacheMBean());
+ infoRegistry.put("fieldCache", new SolrFieldCacheBean());
initSchema(config, schema);
@@ -995,7 +995,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
resourceLoader.inform(infoRegistry);
// Allow the directory factory to register MBeans as well
- for (SolrInfoMBean bean : directoryFactory.offerMBeans()) {
+ for (SolrInfoBean bean : directoryFactory.offerMBeans()) {
log.debug("Registering JMX bean [{}] from directory factory.", bean.getName());
// Not worried about concurrency, so no reason to use putIfAbsent
if (infoRegistry.containsKey(bean.getName())){
@@ -2762,7 +2762,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
}
/////////////////////////////////////////////////////////////////////
- // SolrInfoMBean stuff: Statistics and Module Info
+ // SolrInfoBean stuff: Statistics and Module Info
/////////////////////////////////////////////////////////////////////
@Override
@@ -2955,11 +2955,11 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
};
}
- public void registerInfoBean(String name, SolrInfoMBean solrInfoMBean) {
- infoRegistry.put(name, solrInfoMBean);
+ public void registerInfoBean(String name, SolrInfoBean solrInfoBean) {
+ infoRegistry.put(name, solrInfoBean);
- if (solrInfoMBean instanceof SolrMetricProducer) {
- SolrMetricProducer producer = (SolrMetricProducer) solrInfoMBean;
+ if (solrInfoBean instanceof SolrMetricProducer) {
+ SolrMetricProducer producer = (SolrMetricProducer) solrInfoBean;
coreMetricManager.registerMetricProducer(name, producer);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/SolrInfoBean.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrInfoBean.java b/solr/core/src/java/org/apache/solr/core/SolrInfoBean.java
new file mode 100644
index 0000000..c73492e
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/core/SolrInfoBean.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.core;
+
+import org.apache.solr.common.util.NamedList;
+
+/**
+ * Interface for getting various ui friendly strings and URLs
+ * for use by objects which are 'pluggable' to make server administration
+ * easier.
+ */
+public interface SolrInfoBean {
+
+ /**
+ * Category of Solr component.
+ */
+ enum Category { CONTAINER, ADMIN, CORE, QUERY, UPDATE, CACHE, HIGHLIGHTER, QUERYPARSER, SPELLCHECKER,
+ SEARCHER, REPLICATION, TLOG, INDEX, DIRECTORY, HTTP, OTHER }
+
+ /**
+ * Top-level group of beans or metrics for a subsystem.
+ */
+ enum Group { jvm, jetty, node, core, collection, shard, cluster, overseer }
+
+ /**
+ * Simple common usage name, e.g. BasicQueryHandler,
+ * or fully qualified class name.
+ */
+ String getName();
+ /** Simple one or two line description */
+ String getDescription();
+ /** Category of this component */
+ Category getCategory();
+ /**
+ * Any statistics this instance would like to be publicly available via
+ * the Solr Administration interface.
+ *
+ * <p>
+ * Any Object type may be stored in the list, but only the
+ * <code>toString()</code> representation will be used.
+ * </p>
+ */
+ NamedList getStatistics();
+
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/SolrInfoMBean.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrInfoMBean.java b/solr/core/src/java/org/apache/solr/core/SolrInfoMBean.java
deleted file mode 100644
index 41bd8bf..0000000
--- a/solr/core/src/java/org/apache/solr/core/SolrInfoMBean.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.core;
-
-import org.apache.solr.common.util.NamedList;
-
-/**
- * MBean interface for getting various ui friendly strings and URLs
- * for use by objects which are 'pluggable' to make server administration
- * easier.
- *
- *
- */
-public interface SolrInfoMBean {
-
- /**
- * Category of Solr component.
- */
- enum Category { CONTAINER, ADMIN, CORE, QUERY, UPDATE, CACHE, HIGHLIGHTER, QUERYPARSER, SPELLCHECKER,
- SEARCHER, REPLICATION, TLOG, INDEX, DIRECTORY, HTTP, OTHER }
-
- /**
- * Top-level group of beans or metrics for a subsystem.
- */
- enum Group { jvm, jetty, node, core, collection, shard, cluster, overseer }
-
- /**
- * Simple common usage name, e.g. BasicQueryHandler,
- * or fully qualified clas name.
- */
- public String getName();
- /** Simple one or two line description */
- public String getDescription();
- /** Purpose of this Class */
- public Category getCategory();
- /**
- * Any statistics this instance would like to be publicly available via
- * the Solr Administration interface.
- *
- * <p>
- * Any Object type may be stored in the list, but only the
- * <code>toString()</code> representation will be used.
- * </p>
- */
- public NamedList getStatistics();
-
-}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/SolrInfoMBeanWrapper.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrInfoMBeanWrapper.java b/solr/core/src/java/org/apache/solr/core/SolrInfoMBeanWrapper.java
deleted file mode 100644
index 3b79372..0000000
--- a/solr/core/src/java/org/apache/solr/core/SolrInfoMBeanWrapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.solr.core;
-
-import java.net.URL;
-
-import org.apache.solr.common.util.NamedList;
-
-/**
- * Wraps a {@link SolrInfoMBean}.
- */
-public class SolrInfoMBeanWrapper implements SolrInfoMBean {
- private final SolrInfoMBean mbean;
-
- public SolrInfoMBeanWrapper(SolrInfoMBean mbean) {
- this.mbean = mbean;
- }
-
- /** {@inheritDoc} */
- @Override
- public String getName() { return mbean.getName(); }
-
- /** {@inheritDoc} */
- @Override
- public String getDescription() { return mbean.getDescription(); }
-
- /** {@inheritDoc} */
- @Override
- public Category getCategory() { return mbean.getCategory(); }
-
- /** {@inheritDoc} */
- @Override
- public NamedList getStatistics() { return mbean.getStatistics(); }
-
-}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index d310ff2..2e679cf 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -100,7 +100,7 @@ public class SolrResourceLoader implements ResourceLoader,Closeable
private String dataDir;
private final List<SolrCoreAware> waitingForCore = Collections.synchronizedList(new ArrayList<SolrCoreAware>());
- private final List<SolrInfoMBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoMBean>());
+ private final List<SolrInfoBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoBean>());
private final List<ResourceLoaderAware> waitingForResources = Collections.synchronizedList(new ArrayList<ResourceLoaderAware>());
private static final Charset UTF_8 = StandardCharsets.UTF_8;
@@ -664,9 +664,9 @@ public class SolrResourceLoader implements ResourceLoader,Closeable
assertAwareCompatibility( ResourceLoaderAware.class, obj );
waitingForResources.add( (ResourceLoaderAware)obj );
}
- if (obj instanceof SolrInfoMBean){
+ if (obj instanceof SolrInfoBean){
//TODO: Assert here?
- infoMBeans.add((SolrInfoMBean) obj);
+ infoMBeans.add((SolrInfoBean) obj);
}
}
@@ -722,21 +722,21 @@ public class SolrResourceLoader implements ResourceLoader,Closeable
}
/**
- * Register any {@link org.apache.solr.core.SolrInfoMBean}s
+ * Register any {@link SolrInfoBean}s
* @param infoRegistry The Info Registry
*/
- public void inform(Map<String, SolrInfoMBean> infoRegistry) {
+ public void inform(Map<String, SolrInfoBean> infoRegistry) {
// this can currently happen concurrently with requests starting and lazy components
// loading. Make sure infoMBeans doesn't change.
- SolrInfoMBean[] arr;
+ SolrInfoBean[] arr;
synchronized (infoMBeans) {
- arr = infoMBeans.toArray(new SolrInfoMBean[infoMBeans.size()]);
+ arr = infoMBeans.toArray(new SolrInfoBean[infoMBeans.size()]);
waitingForResources.clear();
}
- for (SolrInfoMBean bean : arr) {
+ for (SolrInfoBean bean : arr) {
// Too slow? I suspect not, but we may need
// to start tracking this in a Set.
if (!infoRegistry.containsValue(bean)) {
@@ -879,7 +879,7 @@ public class SolrResourceLoader implements ResourceLoader,Closeable
public void close() throws IOException {
IOUtils.close(classLoader);
}
- public List<SolrInfoMBean> getInfoMBeans(){
+ public List<SolrInfoBean> getInfoMBeans(){
return Collections.unmodifiableList(infoMBeans);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/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 fd089c7..18ab7c7 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -17,7 +17,6 @@
package org.apache.solr.handler;
import java.lang.invoke.MethodHandles;
-import java.net.URL;
import java.util.Collection;
import com.google.common.collect.ImmutableList;
@@ -31,7 +30,7 @@ import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.core.PluginBag;
import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.metrics.SolrMetricManager;
import org.apache.solr.metrics.SolrMetricProducer;
import org.apache.solr.request.SolrQueryRequest;
@@ -51,7 +50,7 @@ import static org.apache.solr.core.RequestParams.USEPARAM;
/**
*
*/
-public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfoMBean, SolrMetricProducer, NestedRequestHandler,ApiSupport {
+public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfoBean, SolrMetricProducer, NestedRequestHandler,ApiSupport {
protected NamedList initArgs = null;
protected SolrParams defaults;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
index e2ec165..e9af3d0 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
@@ -21,7 +21,7 @@ import java.util.Map;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -46,13 +46,13 @@ public class PluginInfoHandler extends RequestHandlerBase
private static SimpleOrderedMap<Object> getSolrInfoBeans( SolrCore core, boolean stats )
{
SimpleOrderedMap<Object> list = new SimpleOrderedMap<>();
- for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values())
+ for (SolrInfoBean.Category cat : SolrInfoBean.Category.values())
{
SimpleOrderedMap<Object> category = new SimpleOrderedMap<>();
list.add( cat.name(), category );
- Map<String, SolrInfoMBean> reg = core.getInfoRegistry();
- for (Map.Entry<String,SolrInfoMBean> entry : reg.entrySet()) {
- SolrInfoMBean m = entry.getValue();
+ Map<String, SolrInfoBean> reg = core.getInfoRegistry();
+ for (Map.Entry<String,SolrInfoBean> entry : reg.entrySet()) {
+ SolrInfoBean m = entry.getValue();
if (m.getCategory() != cat) continue;
String na = "Not Declared";
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoBeanHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoBeanHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoBeanHandler.java
new file mode 100644
index 0000000..c0f9a74
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoBeanHandler.java
@@ -0,0 +1,291 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.handler.admin;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.solr.handler.RequestHandlerBase;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.client.solrj.impl.XMLResponseParser;
+import org.apache.solr.core.SolrInfoBean;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.response.BinaryResponseWriter;
+import org.apache.solr.response.SolrQueryResponse;
+
+import java.io.StringReader;
+import java.text.NumberFormat;
+import java.util.Locale;
+import java.util.Set;
+import java.util.Map;
+import java.util.HashSet;
+
+/**
+ * A request handler that provides info about all
+ * registered SolrInfoMBeans.
+ */
+@SuppressWarnings("unchecked")
+public class SolrInfoBeanHandler extends RequestHandlerBase {
+
+ /**
+ * Take an array of any type and generate a Set containing the toString.
+ * Set is guarantee to never be null (but may be empty)
+ */
+ private Set<String> arrayToSet(Object[] arr) {
+ HashSet<String> r = new HashSet<>();
+ if (null == arr) return r;
+ for (Object o : arr) {
+ if (null != o) r.add(o.toString());
+ }
+ return r;
+ }
+
+ @Override
+ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
+ NamedList<NamedList<NamedList<Object>>> cats = getMBeanInfo(req);
+ if(req.getParams().getBool("diff", false)) {
+ ContentStream body = null;
+ try {
+ body = req.getContentStreams().iterator().next();
+ }
+ catch(Exception ex) {
+ throw new SolrException(ErrorCode.BAD_REQUEST, "missing content-stream for diff");
+ }
+ String content = IOUtils.toString(body.getReader());
+
+ NamedList<NamedList<NamedList<Object>>> ref = fromXML(content);
+
+
+ // Normalize the output
+ SolrQueryResponse wrap = new SolrQueryResponse();
+ wrap.add("solr-mbeans", cats);
+ cats = (NamedList<NamedList<NamedList<Object>>>)
+ BinaryResponseWriter.getParsedResponse(req, wrap).get("solr-mbeans");
+
+ // Get rid of irrelevant things
+ ref = normalize(ref);
+ cats = normalize(cats);
+
+ // Only the changes
+ boolean showAll = req.getParams().getBool("all", false);
+ rsp.add("solr-mbeans", getDiff(ref,cats, showAll));
+ }
+ else {
+ rsp.add("solr-mbeans", cats);
+ }
+ rsp.setHttpCaching(false); // never cache, no matter what init config looks like
+ }
+
+ static NamedList<NamedList<NamedList<Object>>> fromXML(String content) {
+ int idx = content.indexOf("<response>");
+ if(idx<0) {
+ throw new SolrException(ErrorCode.BAD_REQUEST, "Body does not appear to be an XML response");
+ }
+
+ try {
+ XMLResponseParser parser = new XMLResponseParser();
+ return (NamedList<NamedList<NamedList<Object>>>)
+ parser.processResponse(new StringReader(content)).get("solr-mbeans");
+ }
+ catch(Exception ex) {
+ throw new SolrException(ErrorCode.BAD_REQUEST, "Unable to read original XML", ex);
+ }
+ }
+
+ protected NamedList<NamedList<NamedList<Object>>> getMBeanInfo(SolrQueryRequest req) {
+
+ NamedList<NamedList<NamedList<Object>>> cats = new NamedList<>();
+
+ String[] requestedCats = req.getParams().getParams("cat");
+ if (null == requestedCats || 0 == requestedCats.length) {
+ for (SolrInfoBean.Category cat : SolrInfoBean.Category.values()) {
+ cats.add(cat.name(), new SimpleOrderedMap<NamedList<Object>>());
+ }
+ } else {
+ for (String catName : requestedCats) {
+ cats.add(catName,new SimpleOrderedMap<NamedList<Object>>());
+ }
+ }
+
+ Set<String> requestedKeys = arrayToSet(req.getParams().getParams("key"));
+
+ Map<String, SolrInfoBean> reg = req.getCore().getInfoRegistry();
+ for (Map.Entry<String, SolrInfoBean> entry : reg.entrySet()) {
+ addMBean(req, cats, requestedKeys, entry.getKey(),entry.getValue());
+ }
+
+ for (SolrInfoBean infoMBean : req.getCore().getCoreDescriptor().getCoreContainer().getResourceLoader().getInfoMBeans()) {
+ addMBean(req,cats,requestedKeys,infoMBean.getName(),infoMBean);
+ }
+ return cats;
+ }
+
+ private void addMBean(SolrQueryRequest req, NamedList<NamedList<NamedList<Object>>> cats, Set<String> requestedKeys, String key, SolrInfoBean m) {
+ if ( ! ( requestedKeys.isEmpty() || requestedKeys.contains(key) ) ) return;
+ NamedList<NamedList<Object>> catInfo = cats.get(m.getCategory().name());
+ if ( null == catInfo ) return;
+ NamedList<Object> mBeanInfo = new SimpleOrderedMap<>();
+ mBeanInfo.add("class", m.getName());
+ mBeanInfo.add("description", m.getDescription());
+
+ if (req.getParams().getFieldBool(key, "stats", false))
+ mBeanInfo.add("stats", m.getStatistics());
+
+ catInfo.add(key, mBeanInfo);
+ }
+
+ protected NamedList<NamedList<NamedList<Object>>> getDiff(
+ NamedList<NamedList<NamedList<Object>>> ref,
+ NamedList<NamedList<NamedList<Object>>> now,
+ boolean includeAll ) {
+
+ NamedList<NamedList<NamedList<Object>>> changed = new NamedList<>();
+
+ // Cycle through each category
+ for(int i=0;i<ref.size();i++) {
+ String category = ref.getName(i);
+ NamedList<NamedList<Object>> ref_cat = ref.get(category);
+ NamedList<NamedList<Object>> now_cat = now.get(category);
+ if(now_cat != null) {
+ String ref_txt = ref_cat+"";
+ String now_txt = now_cat+"";
+ if(!ref_txt.equals(now_txt)) {
+ // Something in the category changed
+ // Now iterate the real beans
+
+ NamedList<NamedList<Object>> cat = new SimpleOrderedMap<>();
+ for(int j=0;j<ref_cat.size();j++) {
+ String name = ref_cat.getName(j);
+ NamedList<Object> ref_bean = ref_cat.get(name);
+ NamedList<Object> now_bean = now_cat.get(name);
+
+ ref_txt = ref_bean+"";
+ now_txt = now_bean+"";
+ if(!ref_txt.equals(now_txt)) {
+// System.out.println( "----" );
+// System.out.println( category +" : " + name );
+// System.out.println( "REF: " + ref_txt );
+// System.out.println( "NOW: " + now_txt );
+
+ // Calculate the differences
+ NamedList diff = diffNamedList(ref_bean,now_bean);
+ diff.add( "_changed_", true ); // flag the changed thing
+ cat.add(name, diff);
+ }
+ else if(includeAll) {
+ cat.add(name, ref_bean);
+ }
+ }
+ if(cat.size()>0) {
+ changed.add(category, cat);
+ }
+ }
+ else if(includeAll) {
+ changed.add(category, ref_cat);
+ }
+ }
+ }
+ return changed;
+ }
+
+ public NamedList diffNamedList(NamedList ref, NamedList now) {
+ NamedList out = new SimpleOrderedMap();
+ for(int i=0; i<ref.size(); i++) {
+ String name = ref.getName(i);
+ Object r = ref.getVal(i);
+ Object n = now.remove(name);
+ if(n == null) {
+ if(r!=null) {
+ out.add("REMOVE "+name, r);
+ }
+ }
+ else {
+ out.add(name, diffObject(r,n));
+ }
+ }
+
+ for(int i=0; i<now.size(); i++) {
+ String name = now.getName(i);
+ Object v = now.getVal(i);
+ if(v!=null) {
+ out.add("ADD "+name, v);
+ }
+ }
+ return out;
+ }
+
+ public Object diffObject(Object ref, Object now) {
+ if(ref instanceof NamedList) {
+ return diffNamedList((NamedList)ref, (NamedList)now);
+ }
+ if(ref.equals(now)) {
+ return ref;
+ }
+ StringBuilder str = new StringBuilder();
+ str.append("Was: ")
+ .append(ref).append(", Now: ").append(now);
+
+ if(ref instanceof Number) {
+ NumberFormat nf = NumberFormat.getIntegerInstance(Locale.ROOT);
+ if((ref instanceof Double) || (ref instanceof Float)) {
+ nf = NumberFormat.getInstance(Locale.ROOT);
+ }
+ double dref = ((Number)ref).doubleValue();
+ double dnow = ((Number)now).doubleValue();
+ double diff = Double.NaN;
+ if(Double.isNaN(dref)) {
+ diff = dnow;
+ }
+ else if(Double.isNaN(dnow)) {
+ diff = dref;
+ }
+ else {
+ diff = dnow-dref;
+ }
+ str.append( ", Delta: ").append(nf.format(diff));
+ }
+ return str.toString();
+ }
+
+
+ /**
+ * The 'avgRequestsPerSecond' field will make everything look like it changed
+ */
+ public NamedList normalize(NamedList input) {
+ input.remove("avgRequestsPerSecond");
+ for(int i=0; i<input.size(); i++) {
+ Object v = input.getVal(i);
+ if(v instanceof NamedList) {
+ input.setVal(i, normalize((NamedList)v));
+ }
+ }
+ return input;
+ }
+
+
+ @Override
+ public String getDescription() {
+ return "Get Info (and statistics) for registered SolrInfoMBeans";
+ }
+
+ @Override
+ public Category getCategory() {
+ return Category.ADMIN;
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
deleted file mode 100644
index 52502ab..0000000
--- a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.handler.admin;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.client.solrj.impl.XMLResponseParser;
-import org.apache.solr.core.SolrInfoMBean;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
-import org.apache.solr.common.util.ContentStream;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.response.BinaryResponseWriter;
-import org.apache.solr.response.SolrQueryResponse;
-
-import java.io.StringReader;
-import java.net.URL;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-import java.util.Map;
-import java.util.HashSet;
-
-/**
- * A request handler that provides info about all
- * registered SolrInfoMBeans.
- */
-@SuppressWarnings("unchecked")
-public class SolrInfoMBeanHandler extends RequestHandlerBase {
-
- /**
- * Take an array of any type and generate a Set containing the toString.
- * Set is guarantee to never be null (but may be empty)
- */
- private Set<String> arrayToSet(Object[] arr) {
- HashSet<String> r = new HashSet<>();
- if (null == arr) return r;
- for (Object o : arr) {
- if (null != o) r.add(o.toString());
- }
- return r;
- }
-
- @Override
- public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
- NamedList<NamedList<NamedList<Object>>> cats = getMBeanInfo(req);
- if(req.getParams().getBool("diff", false)) {
- ContentStream body = null;
- try {
- body = req.getContentStreams().iterator().next();
- }
- catch(Exception ex) {
- throw new SolrException(ErrorCode.BAD_REQUEST, "missing content-stream for diff");
- }
- String content = IOUtils.toString(body.getReader());
-
- NamedList<NamedList<NamedList<Object>>> ref = fromXML(content);
-
-
- // Normalize the output
- SolrQueryResponse wrap = new SolrQueryResponse();
- wrap.add("solr-mbeans", cats);
- cats = (NamedList<NamedList<NamedList<Object>>>)
- BinaryResponseWriter.getParsedResponse(req, wrap).get("solr-mbeans");
-
- // Get rid of irrelevant things
- ref = normalize(ref);
- cats = normalize(cats);
-
- // Only the changes
- boolean showAll = req.getParams().getBool("all", false);
- rsp.add("solr-mbeans", getDiff(ref,cats, showAll));
- }
- else {
- rsp.add("solr-mbeans", cats);
- }
- rsp.setHttpCaching(false); // never cache, no matter what init config looks like
- }
-
- static NamedList<NamedList<NamedList<Object>>> fromXML(String content) {
- int idx = content.indexOf("<response>");
- if(idx<0) {
- throw new SolrException(ErrorCode.BAD_REQUEST, "Body does not appear to be an XML response");
- }
-
- try {
- XMLResponseParser parser = new XMLResponseParser();
- return (NamedList<NamedList<NamedList<Object>>>)
- parser.processResponse(new StringReader(content)).get("solr-mbeans");
- }
- catch(Exception ex) {
- throw new SolrException(ErrorCode.BAD_REQUEST, "Unable to read original XML", ex);
- }
- }
-
- protected NamedList<NamedList<NamedList<Object>>> getMBeanInfo(SolrQueryRequest req) {
-
- NamedList<NamedList<NamedList<Object>>> cats = new NamedList<>();
-
- String[] requestedCats = req.getParams().getParams("cat");
- if (null == requestedCats || 0 == requestedCats.length) {
- for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values()) {
- cats.add(cat.name(), new SimpleOrderedMap<NamedList<Object>>());
- }
- } else {
- for (String catName : requestedCats) {
- cats.add(catName,new SimpleOrderedMap<NamedList<Object>>());
- }
- }
-
- Set<String> requestedKeys = arrayToSet(req.getParams().getParams("key"));
-
- Map<String, SolrInfoMBean> reg = req.getCore().getInfoRegistry();
- for (Map.Entry<String, SolrInfoMBean> entry : reg.entrySet()) {
- addMBean(req, cats, requestedKeys, entry.getKey(),entry.getValue());
- }
-
- for (SolrInfoMBean infoMBean : req.getCore().getCoreDescriptor().getCoreContainer().getResourceLoader().getInfoMBeans()) {
- addMBean(req,cats,requestedKeys,infoMBean.getName(),infoMBean);
- }
- return cats;
- }
-
- private void addMBean(SolrQueryRequest req, NamedList<NamedList<NamedList<Object>>> cats, Set<String> requestedKeys, String key, SolrInfoMBean m) {
- if ( ! ( requestedKeys.isEmpty() || requestedKeys.contains(key) ) ) return;
- NamedList<NamedList<Object>> catInfo = cats.get(m.getCategory().name());
- if ( null == catInfo ) return;
- NamedList<Object> mBeanInfo = new SimpleOrderedMap<>();
- mBeanInfo.add("class", m.getName());
- mBeanInfo.add("description", m.getDescription());
-
- if (req.getParams().getFieldBool(key, "stats", false))
- mBeanInfo.add("stats", m.getStatistics());
-
- catInfo.add(key, mBeanInfo);
- }
-
- protected NamedList<NamedList<NamedList<Object>>> getDiff(
- NamedList<NamedList<NamedList<Object>>> ref,
- NamedList<NamedList<NamedList<Object>>> now,
- boolean includeAll ) {
-
- NamedList<NamedList<NamedList<Object>>> changed = new NamedList<>();
-
- // Cycle through each category
- for(int i=0;i<ref.size();i++) {
- String category = ref.getName(i);
- NamedList<NamedList<Object>> ref_cat = ref.get(category);
- NamedList<NamedList<Object>> now_cat = now.get(category);
- if(now_cat != null) {
- String ref_txt = ref_cat+"";
- String now_txt = now_cat+"";
- if(!ref_txt.equals(now_txt)) {
- // Something in the category changed
- // Now iterate the real beans
-
- NamedList<NamedList<Object>> cat = new SimpleOrderedMap<>();
- for(int j=0;j<ref_cat.size();j++) {
- String name = ref_cat.getName(j);
- NamedList<Object> ref_bean = ref_cat.get(name);
- NamedList<Object> now_bean = now_cat.get(name);
-
- ref_txt = ref_bean+"";
- now_txt = now_bean+"";
- if(!ref_txt.equals(now_txt)) {
-// System.out.println( "----" );
-// System.out.println( category +" : " + name );
-// System.out.println( "REF: " + ref_txt );
-// System.out.println( "NOW: " + now_txt );
-
- // Calculate the differences
- NamedList diff = diffNamedList(ref_bean,now_bean);
- diff.add( "_changed_", true ); // flag the changed thing
- cat.add(name, diff);
- }
- else if(includeAll) {
- cat.add(name, ref_bean);
- }
- }
- if(cat.size()>0) {
- changed.add(category, cat);
- }
- }
- else if(includeAll) {
- changed.add(category, ref_cat);
- }
- }
- }
- return changed;
- }
-
- public NamedList diffNamedList(NamedList ref, NamedList now) {
- NamedList out = new SimpleOrderedMap();
- for(int i=0; i<ref.size(); i++) {
- String name = ref.getName(i);
- Object r = ref.getVal(i);
- Object n = now.remove(name);
- if(n == null) {
- if(r!=null) {
- out.add("REMOVE "+name, r);
- }
- }
- else {
- out.add(name, diffObject(r,n));
- }
- }
-
- for(int i=0; i<now.size(); i++) {
- String name = now.getName(i);
- Object v = now.getVal(i);
- if(v!=null) {
- out.add("ADD "+name, v);
- }
- }
- return out;
- }
-
- public Object diffObject(Object ref, Object now) {
- if(ref instanceof NamedList) {
- return diffNamedList((NamedList)ref, (NamedList)now);
- }
- if(ref.equals(now)) {
- return ref;
- }
- StringBuilder str = new StringBuilder();
- str.append("Was: ")
- .append(ref).append(", Now: ").append(now);
-
- if(ref instanceof Number) {
- NumberFormat nf = NumberFormat.getIntegerInstance(Locale.ROOT);
- if((ref instanceof Double) || (ref instanceof Float)) {
- nf = NumberFormat.getInstance(Locale.ROOT);
- }
- double dref = ((Number)ref).doubleValue();
- double dnow = ((Number)now).doubleValue();
- double diff = Double.NaN;
- if(Double.isNaN(dref)) {
- diff = dnow;
- }
- else if(Double.isNaN(dnow)) {
- diff = dref;
- }
- else {
- diff = dnow-dref;
- }
- str.append( ", Delta: ").append(nf.format(diff));
- }
- return str.toString();
- }
-
-
- /**
- * The 'avgRequestsPerSecond' field will make everything look like it changed
- */
- public NamedList normalize(NamedList input) {
- input.remove("avgRequestsPerSecond");
- for(int i=0; i<input.size(); i++) {
- Object v = input.getVal(i);
- if(v instanceof NamedList) {
- input.setVal(i, normalize((NamedList)v));
- }
- }
- return input;
- }
-
-
- @Override
- public String getDescription() {
- return "Get Info (and statistics) for registered SolrInfoMBeans";
- }
-
- @Override
- public Category getCategory() {
- return Category.ADMIN;
- }
-}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
index 9ff4952..2119a41 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
@@ -380,7 +380,7 @@ public class DebugComponent extends SearchComponent
/////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
index 0db2395..c880935 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
@@ -737,7 +737,7 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
index 8a1b8ed..5b81012 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
@@ -1212,7 +1212,7 @@ public class FacetComponent extends SearchComponent {
/////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
index b45be5c..6e66a5e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
@@ -266,7 +266,7 @@ public class HighlightComponent extends SearchComponent implements PluginInfoIni
}
////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
index 83a2d60..304cd2b 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
@@ -36,7 +36,7 @@ import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.URLUtil;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.metrics.SolrMetricManager;
import org.apache.solr.metrics.SolrMetricProducer;
import org.apache.solr.update.UpdateShardHandlerConfig;
@@ -377,7 +377,7 @@ public class HttpShardHandlerFactory extends ShardHandlerFactory implements org.
@Override
public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
- String expandedScope = SolrMetricManager.mkName(scope, SolrInfoMBean.Category.QUERY.name());
+ String expandedScope = SolrMetricManager.mkName(scope, SolrInfoBean.Category.QUERY.name());
clientConnectionManager.initializeMetrics(manager, registry, expandedScope);
httpRequestExecutor.initializeMetrics(manager, registry, expandedScope);
commExecutor = MetricUtils.instrumentedExecutorService(commExecutor,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java b/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
index eb0cc4d..298204f 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
@@ -412,7 +412,7 @@ public class MoreLikeThisComponent extends SearchComponent {
}
// ///////////////////////////////////////////
- // / SolrInfoMBean
+ // / SolrInfoBean
// //////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index c1e42a5..9e7b4f5 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -1375,7 +1375,7 @@ public class QueryComponent extends SearchComponent
}
/////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
index 815eba9..cdc6c64 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
@@ -595,7 +595,7 @@ public class QueryElevationComponent extends SearchComponent implements SolrCore
}
//---------------------------------------------------------------------------------
- // SolrInfoMBean
+ // SolrInfoBean
//---------------------------------------------------------------------------------
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index 3b6dbaf..ceb46f3 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -892,7 +892,7 @@ public class RealTimeGetComponent extends SearchComponent
////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java b/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java
index 5e551da..c566298 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java
@@ -17,13 +17,12 @@
package org.apache.solr.handler.component;
import java.io.IOException;
-import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.search.facet.FacetModule;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
@@ -33,7 +32,7 @@ import org.apache.solr.util.plugin.NamedListInitializedPlugin;
*
* @since solr 1.3
*/
-public abstract class SearchComponent implements SolrInfoMBean, NamedListInitializedPlugin
+public abstract class SearchComponent implements SolrInfoBean, NamedListInitializedPlugin
{
/**
* The name given to this component in solrconfig.xml file
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
index 2f805f4..4e3cd12 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
@@ -853,7 +853,7 @@ public class SpellCheckComponent extends SearchComponent implements SolrCoreAwar
}
// ///////////////////////////////////////////
- // / SolrInfoMBean
+ // / SolrInfoBean
// //////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/handler/component/StatsComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/StatsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/StatsComponent.java
index 6a6e9be..8ecd51c 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/StatsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/StatsComponent.java
@@ -160,7 +160,7 @@ public class StatsComponent extends SearchComponent {
}
/////////////////////////////////////////////
- /// SolrInfoMBean
+ /// SolrInfoBean
////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java b/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java
index a459216..94a5688 100644
--- a/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java
+++ b/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java
@@ -16,18 +16,16 @@
*/
package org.apache.solr.highlight;
-import java.net.URL;
-
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
/**
*
* @since solr 1.3
*/
-public abstract class HighlightingPluginBase implements SolrInfoMBean
+public abstract class HighlightingPluginBase implements SolrInfoBean
{
protected long numRequests;
protected SolrParams defaults;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrBoundaryScanner.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrBoundaryScanner.java b/solr/core/src/java/org/apache/solr/highlight/SolrBoundaryScanner.java
index 6f442f7..2c768ce 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrBoundaryScanner.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrBoundaryScanner.java
@@ -18,11 +18,11 @@ package org.apache.solr.highlight;
import org.apache.lucene.search.vectorhighlight.BoundaryScanner;
import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
public abstract class SolrBoundaryScanner extends HighlightingPluginBase implements
- SolrInfoMBean, NamedListInitializedPlugin {
+ SolrInfoBean, NamedListInitializedPlugin {
public BoundaryScanner getBoundaryScanner(String fieldName, SolrParams params){
numRequests++;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java b/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java
index 9f49228..7b78a06 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java
@@ -19,10 +19,10 @@ package org.apache.solr.highlight;
import org.apache.lucene.search.highlight.Encoder;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-public interface SolrEncoder extends SolrInfoMBean, NamedListInitializedPlugin {
+public interface SolrEncoder extends SolrInfoBean, NamedListInitializedPlugin {
/** <code>init</code> will be called just once, immediately after creation.
* <p>The args are user-level initialization parameters that
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java b/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java
index a8f51db..1a6443e 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java
@@ -19,10 +19,10 @@ package org.apache.solr.highlight;
import org.apache.lucene.search.highlight.Formatter;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-public interface SolrFormatter extends SolrInfoMBean, NamedListInitializedPlugin {
+public interface SolrFormatter extends SolrInfoBean, NamedListInitializedPlugin {
/** <code>init</code> will be called just once, immediately after creation.
* <p>The args are user-level initialization parameters that
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java b/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java
index f0c36b4..87da235 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java
@@ -19,10 +19,10 @@ package org.apache.solr.highlight;
import org.apache.lucene.search.vectorhighlight.FragListBuilder;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-public interface SolrFragListBuilder extends SolrInfoMBean, NamedListInitializedPlugin {
+public interface SolrFragListBuilder extends SolrInfoBean, NamedListInitializedPlugin {
/** <code>init</code> will be called just once, immediately after creation.
* <p>The args are user-level initialization parameters that
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java b/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java
index 547506f..98c3056 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java
@@ -19,10 +19,10 @@ package org.apache.solr.highlight;
import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-public interface SolrFragmenter extends SolrInfoMBean, NamedListInitializedPlugin {
+public interface SolrFragmenter extends SolrInfoBean, NamedListInitializedPlugin {
/** <code>init</code> will be called just once, immediately after creation.
* <p>The args are user-level initialization parameters that
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java b/solr/core/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
index 78ea5a4..b21b669 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
@@ -21,11 +21,11 @@ import org.apache.lucene.search.vectorhighlight.FragmentsBuilder;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.HighlightParams;
import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
public abstract class SolrFragmentsBuilder extends HighlightingPluginBase
- implements SolrInfoMBean, NamedListInitializedPlugin {
+ implements SolrInfoBean, NamedListInitializedPlugin {
public static final String DEFAULT_PRE_TAGS = "<em>";
public static final String DEFAULT_POST_TAGS = "</em>";
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/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 43f3535..52aa1f2 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
@@ -24,7 +24,7 @@ import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.core.NodeConfig;
import org.apache.solr.core.PluginInfo;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,14 +76,14 @@ public class SolrCoreMetricManager implements Closeable {
}
/**
- * Load reporters configured globally and specific to {@link org.apache.solr.core.SolrInfoMBean.Group#core}
+ * Load reporters configured globally and specific to {@link SolrInfoBean.Group#core}
* group or with a registry name specific to this core.
*/
public void loadReporters() {
NodeConfig nodeConfig = core.getCoreDescriptor().getCoreContainer().getConfig();
PluginInfo[] pluginInfos = nodeConfig.getMetricReporterPlugins();
metricManager.loadReporters(pluginInfos, core.getResourceLoader(), tag,
- SolrInfoMBean.Group.core, registryName);
+ SolrInfoBean.Group.core, registryName);
if (cloudMode) {
metricManager.loadShardReporters(pluginInfos, core);
}
@@ -176,9 +176,9 @@ public class SolrCoreMetricManager implements Closeable {
public static String createRegistryName(boolean cloud, String collectionName, String shardName, String replicaName, String coreName) {
if (cloud) { // build registry name from logical names
- return SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, collectionName, shardName, replicaName);
+ return SolrMetricManager.getRegistryName(SolrInfoBean.Group.core, collectionName, shardName, replicaName);
} else {
- return SolrMetricManager.getRegistryName(SolrInfoMBean.Group.core, coreName);
+ return SolrMetricManager.getRegistryName(SolrInfoBean.Group.core, coreName);
}
}
@@ -224,7 +224,7 @@ public class SolrCoreMetricManager implements Closeable {
public static String createLeaderRegistryName(boolean cloud, String collectionName, String shardName) {
if (cloud) {
- return SolrMetricManager.getRegistryName(SolrInfoMBean.Group.collection, collectionName, shardName, "leader");
+ return SolrMetricManager.getRegistryName(SolrInfoBean.Group.collection, collectionName, shardName, "leader");
} else {
return null;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
index 4d093eb..966ce2e 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
@@ -17,7 +17,7 @@
package org.apache.solr.metrics;
import com.codahale.metrics.MetricRegistry;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
/**
* Wraps meta-data for a metric.
@@ -25,7 +25,7 @@ import org.apache.solr.core.SolrInfoMBean;
public final class SolrMetricInfo {
public final String name;
public final String scope;
- public final SolrInfoMBean.Category category;
+ public final SolrInfoBean.Category category;
/**
* Creates a new instance of {@link SolrMetricInfo}.
@@ -34,7 +34,7 @@ public final class SolrMetricInfo {
* @param scope the scope of the metric (e.g. `/admin/ping`)
* @param name the name of the metric (e.g. `Requests`)
*/
- public SolrMetricInfo(SolrInfoMBean.Category category, String scope, String name) {
+ public SolrMetricInfo(SolrInfoBean.Category category, String scope, String name) {
this.name = name;
this.scope = scope;
this.category = category;
@@ -49,9 +49,9 @@ public final class SolrMetricInfo {
return null;
}
// check top-level name for valid category
- SolrInfoMBean.Category category;
+ SolrInfoBean.Category category;
try {
- category = SolrInfoMBean.Category.valueOf(names[0]);
+ category = SolrInfoBean.Category.valueOf(names[0]);
} catch (IllegalArgumentException e) { // not a valid category
return null;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1624ed75/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 f4abee0..f129958 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -51,7 +51,7 @@ import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.PluginInfo;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.metrics.reporters.solr.SolrClusterReporter;
import org.apache.solr.metrics.reporters.solr.SolrShardReporter;
@@ -73,7 +73,7 @@ import org.slf4j.LoggerFactory;
* <p>This class enforces a common prefix ({@link #REGISTRY_NAME_PREFIX}) in all registry
* 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
+ * {@link SolrInfoBean.Group} as the main name of the registry (plus the
* 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>
@@ -87,11 +87,11 @@ public class SolrMetricManager {
/** Registry name for Jetty-specific metrics. This name is also subject to overrides controlled by
* system properties. This registry is shared between instances of {@link SolrMetricManager}. */
- public static final String JETTY_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoMBean.Group.jetty.toString();
+ public static final String JETTY_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoBean.Group.jetty.toString();
/** Registry name for JVM-specific metrics. This name is also subject to overrides controlled by
* system properties. This registry is shared between instances of {@link SolrMetricManager}. */
- public static final String JVM_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoMBean.Group.jvm.toString();
+ public static final String JVM_REGISTRY = REGISTRY_NAME_PREFIX + SolrInfoBean.Group.jvm.toString();
private final ConcurrentMap<String, MetricRegistry> registries = new ConcurrentHashMap<>();
@@ -569,7 +569,7 @@ public class SolrMetricManager {
* </pre>
* <b>NOTE:</b> Once a registry is renamed in a way that its metrics are combined with another repository
* it is no longer possible to retrieve the original metrics until this renaming is removed and the Solr
- * {@link org.apache.solr.core.SolrInfoMBean.Group} of components that reported to that name is restarted.
+ * {@link SolrInfoBean.Group} of components that reported to that name is restarted.
* @param registry The name of the registry
* @return A potentially overridden (via System properties) registry name
*/
@@ -600,7 +600,7 @@ public class SolrMetricManager {
* and the group parameter will be ignored.
* @return fully-qualified and prefixed registry name, with overrides applied.
*/
- public static String getRegistryName(SolrInfoMBean.Group group, String... names) {
+ public static String getRegistryName(SolrInfoBean.Group group, String... names) {
String fullName;
String prefix = REGISTRY_NAME_PREFIX + group.toString() + ".";
// check for existing prefix and group
@@ -622,7 +622,7 @@ public class SolrMetricManager {
// reporter management
/**
- * Create and register {@link SolrMetricReporter}-s specific to a {@link org.apache.solr.core.SolrInfoMBean.Group}.
+ * Create and register {@link SolrMetricReporter}-s specific to a {@link SolrInfoBean.Group}.
* Note: reporters that specify neither "group" nor "registry" attributes are treated as universal -
* they will always be loaded for any group. These two attributes may also contain multiple comma- or
* whitespace-separated values, in which case the reporter will be loaded for any matching value from
@@ -634,7 +634,7 @@ public class SolrMetricManager {
* @param group selected group, not null
* @param registryNames optional child registry name elements
*/
- public void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, String tag, SolrInfoMBean.Group group, String... registryNames) {
+ public void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, String tag, SolrInfoBean.Group group, String... registryNames) {
if (pluginInfos == null || pluginInfos.length == 0) {
return;
}
@@ -941,13 +941,13 @@ public class SolrMetricManager {
// prepare default plugin if none present in the config
Map<String, String> attrs = new HashMap<>();
attrs.put("name", "shardDefault");
- attrs.put("group", SolrInfoMBean.Group.shard.toString());
+ attrs.put("group", SolrInfoBean.Group.shard.toString());
Map<String, Object> initArgs = new HashMap<>();
initArgs.put("period", DEFAULT_CLOUD_REPORTER_PERIOD);
String registryName = core.getCoreMetricManager().getRegistryName();
// collect infos and normalize
- List<PluginInfo> infos = prepareCloudPlugins(pluginInfos, SolrInfoMBean.Group.shard.toString(), SolrShardReporter.class.getName(),
+ List<PluginInfo> infos = prepareCloudPlugins(pluginInfos, SolrInfoBean.Group.shard.toString(), SolrShardReporter.class.getName(),
attrs, initArgs, null);
for (PluginInfo info : infos) {
try {
@@ -967,12 +967,12 @@ public class SolrMetricManager {
}
Map<String, String> attrs = new HashMap<>();
attrs.put("name", "clusterDefault");
- attrs.put("group", SolrInfoMBean.Group.cluster.toString());
+ attrs.put("group", SolrInfoBean.Group.cluster.toString());
Map<String, Object> initArgs = new HashMap<>();
initArgs.put("period", DEFAULT_CLOUD_REPORTER_PERIOD);
- List<PluginInfo> infos = prepareCloudPlugins(pluginInfos, SolrInfoMBean.Group.cluster.toString(), SolrClusterReporter.class.getName(),
+ List<PluginInfo> infos = prepareCloudPlugins(pluginInfos, SolrInfoBean.Group.cluster.toString(), SolrClusterReporter.class.getName(),
attrs, initArgs, null);
- String registryName = getRegistryName(SolrInfoMBean.Group.cluster);
+ String registryName = getRegistryName(SolrInfoBean.Group.cluster);
for (PluginInfo info : infos) {
try {
SolrMetricReporter reporter = loadReporter(registryName, cc.getResourceLoader(), info, null);