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 ee7923f4b00..eca391b4989 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -54,7 +54,7 @@ import static org.apache.solr.core.RequestParams.USEPARAM;
/**
*
*/
-public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfoBean, SolrMetricProducer, NestedRequestHandler,ApiSupport {
+public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfoBean, SolrMetricProducer, NestedRequestHandler, ApiSupport {
protected NamedList initArgs = null;
protected SolrParams defaults;
@@ -97,7 +97,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
*
appends | Contains all of the named arguments contained within the list element named "appends". |
* invariants | Contains all of the named arguments contained within the list element named "invariants". |
*
- *
+ *
* Example:
*
* <lst name="defaults">
@@ -118,26 +118,24 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
* </lst>
*
*
- *
* @param args The {@link org.apache.solr.common.util.NamedList} to initialize from
- *
* @see #handleRequest(org.apache.solr.request.SolrQueryRequest, org.apache.solr.response.SolrQueryResponse)
* @see #handleRequestBody(org.apache.solr.request.SolrQueryRequest, org.apache.solr.response.SolrQueryResponse)
* @see org.apache.solr.util.SolrPluginUtils#setDefaults(org.apache.solr.request.SolrQueryRequest, org.apache.solr.common.params.SolrParams, org.apache.solr.common.params.SolrParams, org.apache.solr.common.params.SolrParams)
* @see NamedList#toSolrParams()
- *
+ *
* See also the example solrconfig.xml located in the Solr codebase (example/solr/conf).
*/
@Override
public void init(NamedList args) {
initArgs = args;
- if( args != null ) {
+ if (args != null) {
defaults = getSolrParamsFromNamedList(args, "defaults");
appends = getSolrParamsFromNamedList(args, "appends");
invariants = getSolrParamsFromNamedList(args, "invariants");
}
-
+
if (initArgs != null) {
Object caching = initArgs.get("httpCaching");
httpCaching = caching != null ? Boolean.parseBoolean(caching.toString()) : true;
@@ -156,7 +154,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
numTimeouts = manager.meter(this, registryName, "timeouts", getCategory().toString(), scope);
requests = manager.counter(this, registryName, "requests", getCategory().toString(), scope);
MetricsMap metricsMap = new MetricsMap((detail, map) ->
- shardPurposes.forEach((k, v) -> map.put(k, v.getCount())));
+ shardPurposes.forEach((k, v) -> map.put(k, v.getCount())));
manager.registerGauge(this, registryName, metricsMap, tag, true, "shardRequests", getCategory().toString(), scope);
requestTimes = manager.timer(this, registryName, "requestTimes", getCategory().toString(), scope);
totalTime = manager.counter(this, registryName, "totalTime", getCategory().toString(), scope);
@@ -174,8 +172,8 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
public NamedList getInitArgs() {
return initArgs;
}
-
- public abstract void handleRequestBody( SolrQueryRequest req, SolrQueryResponse rsp ) throws Exception;
+
+ public abstract void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception;
@Override
public void handleRequest(SolrQueryRequest req, SolrQueryResponse rsp) {
@@ -192,16 +190,17 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
}
Timer.Context timer = requestTimes.time();
try {
- if(pluginInfo != null && pluginInfo.attributes.containsKey(USEPARAM)) req.getContext().put(USEPARAM,pluginInfo.attributes.get(USEPARAM));
+ if (pluginInfo != null && pluginInfo.attributes.containsKey(USEPARAM))
+ req.getContext().put(USEPARAM, pluginInfo.attributes.get(USEPARAM));
SolrPluginUtils.setDefaults(this, req, defaults, appends, invariants);
req.getContext().remove(USEPARAM);
rsp.setHttpCaching(httpCaching);
- handleRequestBody( req, rsp );
+ handleRequestBody(req, rsp);
// count timeouts
NamedList header = rsp.getResponseHeader();
- if(header != null) {
- if( Boolean.TRUE.equals(header.getBooleanArg(
- SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY)) ) {
+ if (header != null) {
+ if (Boolean.TRUE.equals(header.getBooleanArg(
+ SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY))) {
numTimeouts.mark();
rsp.setHttpCaching(false);
}
@@ -222,7 +221,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
boolean incrementErrors = true;
boolean isServerError = true;
if (e instanceof SolrException) {
- SolrException se = (SolrException)e;
+ SolrException se = (SolrException) e;
if (se.code() == SolrException.ErrorCode.CONFLICT.code) {
incrementErrors = false;
} else if (se.code() >= 400 && se.code() < 500) {
@@ -286,16 +285,16 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
/**
* Get the request handler registered to a given name.
- *
+ *
* This function is thread safe.
*/
public static SolrRequestHandler getRequestHandler(String handlerName, PluginBag reqHandlers) {
- if(handlerName == null) return null;
+ if (handlerName == null) return null;
SolrRequestHandler handler = reqHandlers.get(handlerName);
int idx = 0;
- if(handler == null) {
+ if (handler == null) {
for (; ; ) {
- idx = handlerName.indexOf('/', idx+1);
+ idx = handlerName.indexOf('/', idx + 1);
if (idx > 0) {
String firstPart = handlerName.substring(0, idx);
handler = reqHandlers.get(firstPart);
@@ -311,12 +310,12 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
return handler;
}
- public void setPluginInfo(PluginInfo pluginInfo){
- if(this.pluginInfo==null) this.pluginInfo = pluginInfo;
+ public void setPluginInfo(PluginInfo pluginInfo) {
+ if (this.pluginInfo == null) this.pluginInfo = pluginInfo;
}
- public PluginInfo getPluginInfo(){
- return pluginInfo;
+ public PluginInfo getPluginInfo() {
+ return pluginInfo;
}
@Override
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 6e01204e4ee..23a8bf14177 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -64,9 +64,9 @@ import org.slf4j.MDC;
* This class maintains a repository of named {@link MetricRegistry} instances, and provides several
* helper methods for managing various aspects of metrics reporting:
*
- * - registry creation, clearing and removal,
- * - creation of most common metric implementations,
- * - management of {@link SolrMetricReporter}-s specific to a named registry.
+ * - registry creation, clearing and removal,
+ * - creation of most common metric implementations,
+ * - management of {@link SolrMetricReporter}-s specific to a named registry.
*
* {@link MetricRegistry} instances are automatically created when first referenced by name. Similarly,
* instances of {@link Metric} implementations, such as {@link Meter}, {@link Counter}, {@link Timer} and
@@ -84,15 +84,21 @@ public class SolrMetricManager {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- /** Common prefix for all registry names that Solr uses. */
+ /**
+ * Common prefix for all registry names that Solr uses.
+ */
public static final String REGISTRY_NAME_PREFIX = "solr.";
- /** 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}. */
+ /**
+ * 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 + 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}. */
+ /**
+ * 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 + SolrInfoBean.Group.jvm.toString();
private final ConcurrentMap registries = new ConcurrentHashMap<>();
@@ -151,8 +157,9 @@ public class SolrMetricManager {
/**
* Create a filter that uses the provided prefixes.
+ *
* @param prefixes prefixes to use, must not be null. If empty then any
- * name will match, if not empty then match on any prefix will
+ * name will match, if not empty then match on any prefix will
* succeed (logical OR).
*/
public PrefixFilter(String... prefixes) {
@@ -190,6 +197,7 @@ public class SolrMetricManager {
/**
* Return the set of names that matched this filter.
+ *
* @return matching names
*/
public Set getMatched() {
@@ -222,8 +230,9 @@ public class SolrMetricManager {
/**
* Create a filter that uses the provided prefix.
+ *
* @param patterns regex patterns to use, must not be null. If empty then any
- * name will match, if not empty then match on any pattern will
+ * name will match, if not empty then match on any pattern will
* succeed (logical OR).
*/
public RegexFilter(String... patterns) throws PatternSyntaxException {
@@ -262,6 +271,7 @@ public class SolrMetricManager {
/**
* Return the set of names that matched this filter.
+ *
* @return matching names
*/
public Set getMatched() {
@@ -355,6 +365,7 @@ public class SolrMetricManager {
/**
* Check whether a registry with a given name already exists.
+ *
* @param name registry name
* @return true if this name points to a registry that already exists, false otherwise
*/
@@ -366,6 +377,7 @@ public class SolrMetricManager {
/**
* Return set of existing registry names that match a regex pattern
+ *
* @param patterns regex patterns. NOTE: users need to make sure that patterns that
* don't start with a wildcard use the full registry name starting with
* {@link #REGISTRY_NAME_PREFIX}
@@ -379,7 +391,7 @@ public class SolrMetricManager {
for (String pattern : patterns) {
compiled.add(Pattern.compile(pattern));
}
- return registryNames((Pattern[])compiled.toArray(new Pattern[compiled.size()]));
+ return registryNames((Pattern[]) compiled.toArray(new Pattern[compiled.size()]));
}
public Set registryNames(Pattern... patterns) {
@@ -401,6 +413,7 @@ public class SolrMetricManager {
* Check for predefined shared registry names. This compares the input name
* with normalized names of predefined shared registries -
* {@link #JVM_REGISTRY} and {@link #JETTY_REGISTRY}.
+ *
* @param registry already normalized name
* @return true if the name matches one of shared registries
*/
@@ -410,6 +423,7 @@ public class SolrMetricManager {
/**
* Get (or create if not present) a named registry
+ *
* @param registry name of the registry
* @return existing or newly created registry
*/
@@ -444,6 +458,7 @@ public class SolrMetricManager {
/**
* Remove a named registry.
+ *
* @param registry name of the registry to remove
*/
public void removeRegistry(String registry) {
@@ -467,6 +482,7 @@ public class SolrMetricManager {
* Swap registries. This is useful eg. during
* {@link org.apache.solr.core.SolrCore} rename or swap operations. NOTE:
* this operation is not supported for shared registries.
+ *
* @param registry1 source registry
* @param registry2 target registry. Note: when used after core rename the target registry doesn't
* exist, so the swap operation will only rename the existing registry without creating
@@ -501,11 +517,12 @@ public class SolrMetricManager {
/**
* Register all metrics in the provided {@link MetricSet}, optionally skipping those that
* already exist.
- * @param registry registry name
- * @param metrics metric set to register
- * @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 registry registry name
+ * @param metrics metric set to register
+ * @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.
*/
@@ -525,6 +542,7 @@ public class SolrMetricManager {
/**
* Remove all metrics from a specified registry.
+ *
* @param registry registry name
*/
public void clearRegistry(String registry) {
@@ -533,12 +551,13 @@ public class SolrMetricManager {
/**
* Remove some metrics from a named registry
- * @param registry registry name
+ *
+ * @param registry registry name
* @param metricPath (optional) top-most metric name path elements. If empty then
- * this is equivalent to calling {@link #clearRegistry(String)},
- * otherwise non-empty elements will be joined using dotted notation
- * to form a fully-qualified prefix. Metrics with names that start
- * with the prefix will be removed.
+ * this is equivalent to calling {@link #clearRegistry(String)},
+ * otherwise non-empty elements will be joined using dotted notation
+ * to form a fully-qualified prefix. Metrics with names that start
+ * with the prefix will be removed.
* @return set of metrics names that have been removed.
*/
public Set clearMetrics(String registry, String... metricPath) {
@@ -555,7 +574,8 @@ public class SolrMetricManager {
/**
* Retrieve matching metrics and their names.
- * @param registry registry name.
+ *
+ * @param registry registry name.
* @param metricFilter filter (null is equivalent to {@link MetricFilter#ALL}).
* @return map of matching names and metrics
*/
@@ -570,7 +590,8 @@ public class SolrMetricManager {
/**
* Create or get an existing named {@link Meter}
- * @param registry registry name
+ *
+ * @param registry registry name
* @param metricName metric name, either final name or a fully-qualified name
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
@@ -586,7 +607,8 @@ public class SolrMetricManager {
/**
* Create or get an existing named {@link Timer}
- * @param registry registry name
+ *
+ * @param registry registry name
* @param metricName metric name, either final name or a fully-qualified name
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
@@ -602,7 +624,8 @@ public class SolrMetricManager {
/**
* Create or get an existing named {@link Counter}
- * @param registry registry name
+ *
+ * @param registry registry name
* @param metricName metric name, either final name or a fully-qualified name
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
@@ -618,7 +641,8 @@ public class SolrMetricManager {
/**
* Create or get an existing named {@link Histogram}
- * @param registry registry name
+ *
+ * @param registry registry name
* @param metricName metric name, either final name or a fully-qualified name
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
@@ -634,11 +658,12 @@ public class SolrMetricManager {
/**
* Register an instance of {@link Metric}.
- * @param registry registry name
- * @param metric metric instance
- * @param force if true then an already existing metric with the same name will be replaced.
- * When false and a metric with the same name already exists an exception
- * will be thrown.
+ *
+ * @param registry registry name
+ * @param metric metric instance
+ * @param force if true then an already existing metric with the same name will be replaced.
+ * When false and a metric with the same name already exists an exception
+ * will be thrown.
* @param metricName metric name, either final name or a fully-qualified name
* using dotted notation
* @param metricPath (optional) additional top-most metric name path elements
@@ -699,7 +724,7 @@ public class SolrMetricManager {
AtomicInteger removed = new AtomicInteger();
registry.removeMatching((name, metric) -> {
if (metric instanceof GaugeWrapper &&
- tag.equals(((GaugeWrapper)metric).getTag())) {
+ tag.equals(((GaugeWrapper) metric).getTag())) {
removed.incrementAndGet();
return true;
} else {
@@ -711,6 +736,7 @@ public class SolrMetricManager {
/**
* This method creates a hierarchical name with arbitrary levels of hierarchy
+ *
* @param name the final segment of the name, must not be null or empty.
* @param path optional path segments, starting from the top level. Empty or null
* segments will be skipped.
@@ -744,6 +770,7 @@ public class SolrMetricManager {
/**
* Enforces the leading {@link #REGISTRY_NAME_PREFIX} in a name.
+ *
* @param name input name, possibly without the prefix
* @return original name if it contained the prefix, or the
* input name with the prefix prepended.
@@ -758,6 +785,7 @@ public class SolrMetricManager {
/**
* Helper method to construct a properly prefixed registry name based on the group.
+ *
* @param group reporting group
* @param names optional child elements of the registry name. If exactly one element is provided
* and it already contains the required prefix and group name then this value will be used,
@@ -791,13 +819,14 @@ public class SolrMetricManager {
* 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
* the list. If both attributes are present then only "group" attribute will be processed.
- * @param pluginInfos plugin configurations
- * @param loader resource loader
+ *
+ * @param pluginInfos plugin configurations
+ * @param loader resource loader
* @param coreContainer core container
- * @param solrCore optional solr core
- * @param tag optional tag for the reporters, to distinguish reporters logically created for different parent
- * component instances.
- * @param group selected group, not null
+ * @param solrCore optional solr core
+ * @param tag optional tag for the reporters, to distinguish reporters logically created for different parent
+ * component instances.
+ * @param group selected group, not null
* @param registryNames optional child registry name elements
*/
public void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, CoreContainer coreContainer, SolrCore solrCore, String tag, SolrInfoBean.Group group, String... registryNames) {
@@ -875,13 +904,14 @@ public class SolrMetricManager {
/**
* Create and register an instance of {@link SolrMetricReporter}.
- * @param registry reporter is associated with this registry
- * @param loader loader to use when creating an instance of the reporter
+ *
+ * @param registry reporter is associated with this registry
+ * @param loader loader to use when creating an instance of the reporter
* @param coreContainer core container
- * @param solrCore optional solr core
- * @param pluginInfo plugin configuration. Plugin "name" and "class" attributes are required.
- * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
- * component instances.
+ * @param solrCore optional solr core
+ * @param pluginInfo plugin configuration. Plugin "name" and "class" attributes are required.
+ * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
+ * component instances.
* @throws Exception if any argument is missing or invalid
*/
public void loadReporter(String registry, SolrResourceLoader loader, CoreContainer coreContainer, SolrCore solrCore, PluginInfo pluginInfo, String tag) throws Exception {
@@ -909,9 +939,9 @@ public class SolrMetricManager {
}
try {
if (reporter instanceof SolrCoreReporter) {
- ((SolrCoreReporter)reporter).init(pluginInfo, solrCore);
+ ((SolrCoreReporter) reporter).init(pluginInfo, solrCore);
} else if (reporter instanceof SolrCoreContainerReporter) {
- ((SolrCoreContainerReporter)reporter).init(pluginInfo, coreContainer);
+ ((SolrCoreContainerReporter) reporter).init(pluginInfo, coreContainer);
} else {
reporter.init(pluginInfo);
}
@@ -955,10 +985,11 @@ public class SolrMetricManager {
/**
* Close and unregister a named {@link SolrMetricReporter} for a registry.
+ *
* @param registry registry name
- * @param name reporter name
- * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
- * component instances.
+ * @param name reporter name
+ * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
+ * component instances.
* @return true if a named reporter existed and was closed.
*/
public boolean closeReporter(String registry, String name, String tag) {
@@ -998,6 +1029,7 @@ public class SolrMetricManager {
/**
* Close and unregister all {@link SolrMetricReporter}-s for a registry.
+ *
* @param registry registry name
* @return names of closed reporters
*/
@@ -1007,9 +1039,10 @@ public class SolrMetricManager {
/**
* Close and unregister all {@link SolrMetricReporter}-s for a registry.
+ *
* @param registry registry name
- * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
- * component instances.
+ * @param tag optional tag for the reporter, to distinguish reporters logically created for different parent
+ * component instances.
* @return names of closed reporters
*/
public Set closeReporters(String registry, String tag) {
@@ -1056,6 +1089,7 @@ public class SolrMetricManager {
/**
* Get a map of reporters for a registry. Keys are reporter names, values are reporter instances.
+ *
* @param registry registry name
* @return map of reporters and their names, may be empty but never null
*/
@@ -1085,8 +1119,8 @@ public class SolrMetricManager {
}
private List prepareCloudPlugins(PluginInfo[] pluginInfos, String group,
- Map defaultAttributes,
- Map defaultInitArgs) {
+ Map defaultAttributes,
+ Map defaultInitArgs) {
List result = new ArrayList<>();
if (pluginInfos == null) {
pluginInfos = new PluginInfo[0];