You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2019/08/19 09:42:08 UTC
[lucene-solr] branch jira/SOLR-13677_2 updated: more refactoring
This is an automated email from the ASF dual-hosted git repository.
noble pushed a commit to branch jira/SOLR-13677_2
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/jira/SOLR-13677_2 by this push:
new a5f8d12 more refactoring
a5f8d12 is described below
commit a5f8d123a1b1f05fdcbea45140cee6bb67cf7a47
Author: noble <no...@apache.org>
AuthorDate: Mon Aug 19 19:41:52 2019 +1000
more refactoring
---
.../solr/handler/dataimport/DataImportHandler.java | 7 +-
.../apache/solr/handler/ReplicationHandler.java | 48 +++++------
.../apache/solr/handler/RequestHandlerBase.java | 31 +++----
.../solr/handler/admin/CoreAdminHandler.java | 9 ++-
.../solr/handler/component/SuggestComponent.java | 7 +-
.../apache/solr/metrics/SolrMetricProducer.java | 83 +------------------
.../java/org/apache/solr/metrics/SolrMetrics.java | 94 ++++++++++++++++++++++
.../java/org/apache/solr/search/FastLRUCache.java | 7 +-
.../src/java/org/apache/solr/search/LFUCache.java | 17 ++--
.../src/java/org/apache/solr/search/LRUCache.java | 25 +++---
.../org/apache/solr/search/SolrCacheHolder.java | 3 +-
.../apache/solr/security/AuthenticationPlugin.java | 29 +++----
.../solr/handler/admin/MetricsHandlerTest.java | 21 +++--
13 files changed, 201 insertions(+), 180 deletions(-)
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
index 4329d34..80d374e 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
@@ -36,6 +36,7 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.metrics.MetricsMap;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.RawResponseWriter;
import org.apache.solr.response.SolrQueryResponse;
@@ -274,8 +275,8 @@ public class DataImportHandler extends RequestHandlerBase implements
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- super.initializeMetrics(info);
+ public void initializeMetrics(SolrMetrics m) {
+ super.initializeMetrics(m);
metrics = new MetricsMap((detailed, map) -> {
if (importer != null) {
DocBuilder.Statistics cumulative = importer.cumulativeStatistics;
@@ -298,7 +299,7 @@ public class DataImportHandler extends RequestHandlerBase implements
map.put(DataImporter.MSG.TOTAL_DOCS_SKIPPED, cumulative.skipDocCount);
}
});
- metricsInfo.gauge(this, metrics, true, "importer", getCategory().toString());
+ solrMetrics.gauge(this, metrics, true, "importer", getCategory().toString());
}
// //////////////////////SolrInfoMBeans methods //////////////////////
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index 3fc9458..76ecbec 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -92,7 +92,7 @@ import org.apache.solr.core.backup.repository.BackupRepository;
import org.apache.solr.core.backup.repository.LocalFileSystemRepository;
import org.apache.solr.handler.IndexFetcher.IndexFetchResult;
import org.apache.solr.metrics.MetricsMap;
-import org.apache.solr.metrics.SolrMetricManager;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.search.SolrIndexSearcher;
@@ -863,24 +863,20 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- super.initializeMetrics(info);
- SolrMetricManager manager = metricsInfo.metricManager;
- String registry = metricsInfo.registry;
- String scope = metricsInfo.scope;
- String tag = metricsInfo.tag;
- manager.registerGauge(this, registry, () -> (core != null && !core.isClosed() ? NumberUtils.readableSize(core.getIndexSize()) : ""),
- tag, true, "indexSize", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> (core != null && !core.isClosed() ? getIndexVersion().toString() : ""),
- tag, true, "indexVersion", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> (core != null && !core.isClosed() ? getIndexVersion().generation : 0),
- tag, true, GENERATION, getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> (core != null && !core.isClosed() ? core.getIndexDir() : ""),
- tag, true, "indexPath", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> isMaster,
- tag, true, "isMaster", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> isSlave,
- tag, true, "isSlave", getCategory().toString(), scope);
+ public void initializeMetrics(SolrMetrics m) {
+ super.initializeMetrics(m);
+ solrMetrics.gauge(this, () -> (core != null && !core.isClosed() ? NumberUtils.readableSize(core.getIndexSize()) : ""),
+ true, "indexSize", getCategory().toString());
+ solrMetrics.gauge(this, () -> (core != null && !core.isClosed() ? getIndexVersion().toString() : ""),
+ true, "indexVersion", getCategory().toString());
+ solrMetrics.gauge(this, () -> (core != null && !core.isClosed() ? getIndexVersion().generation : 0),
+ true, GENERATION, getCategory().toString());
+ solrMetrics.gauge(this, () -> (core != null && !core.isClosed() ? core.getIndexDir() : ""),
+ true, "indexPath", getCategory().toString());
+ solrMetrics.gauge(this, () -> isMaster,
+ true, "isMaster", getCategory().toString());
+ solrMetrics.gauge(this, () -> isSlave,
+ true, "isSlave", getCategory().toString());
final MetricsMap fetcherMap = new MetricsMap((detailed, map) -> {
IndexFetcher fetcher = currentIndexFetcher;
if (fetcher != null) {
@@ -909,13 +905,13 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
addVal(map, IndexFetcher.CONF_FILES_REPLICATED, props, String.class);
}
});
- manager.registerGauge(this, registry, fetcherMap, tag, true, "fetcher", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> isMaster && includeConfFiles != null ? includeConfFiles : "",
- tag, true, "confFilesToReplicate", getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> isMaster ? getReplicateAfterStrings() : Collections.<String>emptyList(),
- tag, true, REPLICATE_AFTER, getCategory().toString(), scope);
- manager.registerGauge(this, registry, () -> isMaster && replicationEnabled.get(),
- tag, true, "replicationEnabled", getCategory().toString(), scope);
+ solrMetrics.gauge(this , fetcherMap, true, "fetcher", getCategory().toString());
+ solrMetrics.gauge(this, () -> isMaster && includeConfFiles != null ? includeConfFiles : "",
+ true, "confFilesToReplicate", getCategory().toString());
+ solrMetrics.gauge(this, () -> isMaster ? getReplicateAfterStrings() : Collections.<String>emptyList(),
+ true, REPLICATE_AFTER, getCategory().toString());
+ solrMetrics.gauge(this, () -> isMaster && replicationEnabled.get(),
+ true, "replicationEnabled", getCategory().toString());
}
//TODO Should a failure retrieving any piece of info mark the overall request as a failure? Is there a core set of values that are required to make a response here useful?
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 47c2d22..499db95 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -40,6 +40,7 @@ import org.apache.solr.core.PluginInfo;
import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.metrics.MetricsMap;
import org.apache.solr.metrics.SolrMetricProducer;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
@@ -139,27 +140,27 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
}
- protected MetricsInfo metricsInfo;
+ protected SolrMetrics solrMetrics;
@Override
- public MetricsInfo getMetricsInfo() {
- return metricsInfo;
+ public SolrMetrics getMetrics() {
+ return solrMetrics;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- this.metricsInfo = info.getChildInfo(this);
- numErrors = metricsInfo.meter(this, "errors", getCategory().toString());
- numServerErrors = metricsInfo.meter(this, "serverErrors", getCategory().toString());
- numClientErrors = metricsInfo.meter(this, "clientErrors", getCategory().toString());
- numTimeouts = metricsInfo.meter(this, "timeouts", getCategory().toString());
- requests = metricsInfo.counter(this, "requests", getCategory().toString());
+ public void initializeMetrics(SolrMetrics m) {
+ this.solrMetrics = m.getChildInfo(this);
+ numErrors = solrMetrics.meter(this, "errors", getCategory().toString());
+ numServerErrors = solrMetrics.meter(this, "serverErrors", getCategory().toString());
+ numClientErrors = solrMetrics.meter(this, "clientErrors", getCategory().toString());
+ numTimeouts = solrMetrics.meter(this, "timeouts", getCategory().toString());
+ requests = solrMetrics.counter(this, "requests", getCategory().toString());
MetricsMap metricsMap = new MetricsMap((detail, map) ->
shardPurposes.forEach((k, v) -> map.put(k, v.getCount())));
- metricsInfo.gauge(this, metricsMap, true, "shardRequests", getCategory().toString());
- requestTimes = metricsInfo.timer(this,"requestTimes", getCategory().toString());
- totalTime = metricsInfo.counter(this, "totalTime", getCategory().toString());
- metricsInfo.gauge(this, () -> handlerStart, true, "handlerStart", getCategory().toString());
+ solrMetrics.gauge(this, metricsMap, true, "shardRequests", getCategory().toString());
+ requestTimes = solrMetrics.timer(this,"requestTimes", getCategory().toString());
+ totalTime = solrMetrics.counter(this, "totalTime", getCategory().toString());
+ solrMetrics.gauge(this, () -> handlerStart, true, "handlerStart", getCategory().toString());
}
public static SolrParams getSolrParamsFromNamedList(NamedList args, String key) {
@@ -275,7 +276,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
@Override
public MetricRegistry getMetricRegistry() {
- return metricsInfo.getRegistry();
+ return solrMetrics.getRegistry();
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index 86fae83..ae22555 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -46,6 +46,7 @@ import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.metrics.SolrMetricManager;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.security.AuthorizationContext;
@@ -120,10 +121,10 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- super.initializeMetrics(info);
- parallelExecutor = MetricUtils.instrumentedExecutorService(parallelExecutor, this, metricsInfo.metricManager.registry(metricsInfo.registry),
- SolrMetricManager.mkName("parallelCoreAdminExecutor", getCategory().name(),metricsInfo.scope, "threadPool"));
+ public void initializeMetrics(SolrMetrics m) {
+ super.initializeMetrics(m);
+ parallelExecutor = MetricUtils.instrumentedExecutorService(parallelExecutor, this, solrMetrics.getRegistry(),
+ SolrMetricManager.mkName("parallelCoreAdminExecutor", getCategory().name(), solrMetrics.scope, "threadPool"));
}
@Override
public Boolean registerV2() {
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java b/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java
index ec08690..00d8697 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java
@@ -49,6 +49,7 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrEventListener;
import org.apache.solr.metrics.MetricsMap;
import org.apache.solr.metrics.SolrMetricProducer;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.spelling.suggest.SolrSuggester;
import org.apache.solr.spelling.suggest.SuggesterOptions;
@@ -346,15 +347,15 @@ public class SuggestComponent extends SearchComponent implements SolrCoreAware,
return "Suggester component";
}
- protected MetricsInfo metricsInfo;
+ protected SolrMetrics metricsInfo;
@Override
- public MetricsInfo getMetricsInfo() {
+ public SolrMetrics getMetrics() {
return metricsInfo;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
+ public void initializeMetrics(SolrMetrics info) {
this.metricsInfo = info.getChildInfo(this);
metricsInfo.metricManager.registerGauge(this, info.registry, () -> ramBytesUsed(), metricsInfo.tag, true, "totalSizeInBytes", getCategory().toString(), metricsInfo.scope);
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
index a040e1c..cb534ac 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
@@ -16,18 +16,6 @@
*/
package org.apache.solr.metrics;
-import java.util.ArrayList;
-import java.util.Collections;
-
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import org.apache.solr.core.SolrInfoBean;
-
-import static org.apache.solr.metrics.SolrMetricManager.makeName;
-
/**
* Used by objects that expose metrics through {@link SolrCoreMetricManager}.
*/
@@ -60,87 +48,24 @@ public interface SolrMetricProducer extends AutoCloseable {
* @param scope scope of the metrics (eg. handler name) to separate metrics of
*/
default void initializeMetrics(SolrMetricManager manager, String registry, String tag, String scope) {
- initializeMetrics(new MetricsInfo(manager, registry, tag, scope));
+ initializeMetrics(new SolrMetrics(manager, registry, tag, scope));
}
- default void initializeMetrics(MetricsInfo info) {
+ default void initializeMetrics(SolrMetrics info) {
throw new RuntimeException("This means , the class has not implemented both of these methods");
}
- default MetricsInfo getMetricsInfo() {
+ default SolrMetrics getMetrics() {
return null;
}
@Override
default void close() throws Exception {
- MetricsInfo info = getMetricsInfo();
+ SolrMetrics info = getMetrics();
if (info == null || info.tag.indexOf(':') == -1) return;//this will end up unregistering the root itself
info.unregister();
}
- class MetricsInfo {
- public final String registry;
- public final SolrMetricManager metricManager;
- public final String tag;
- public final String scope;
- private MetricsInfo parent;
-
- public MetricsInfo(SolrMetricManager metricManager, String registry, String tag, String scope) {
- this.registry = registry;
- this.metricManager = metricManager;
- this.tag = tag;
- this.scope = scope;
- }
-
- public String getTag() {
- return tag;
- }
-
- public void unregister() {
- metricManager.unregisterGauges(registry, tag);
- }
-
- public MetricsInfo getChildInfo(SolrMetricProducer producer) {
- MetricsInfo metricsInfo = new MetricsInfo(metricManager, registry, producer.getUniqueMetricTag(tag), scope);
- metricsInfo.parent = this;
- return metricsInfo;
- }
-
- public Meter meter(SolrInfoBean info, String metricName, String... metricpath) {
- return metricManager.meter(info, getRegistry(), createName(metricName, metricpath));
- }
-
- private String createName(String metricName, String... metricpath) {
- ArrayList<String> l = new ArrayList<>();
- if(metricpath != null ) {
- Collections.addAll(l, metricpath);
- }
- l.add(scope);
- return makeName(l, metricName);
- }
-
- public Counter counter(SolrInfoBean info, String metricName, String... metricpath) {
- return metricManager.counter(info, getRegistry(), createName(metricName, metricpath));
-
- }
-
- public void gauge(SolrInfoBean info, Gauge<?> gauge, boolean force, String metricName, String... metricpath) {
- metricManager.registerGauge(info, getRegistry(), new SolrMetricManager.GaugeWrapper<>(gauge, tag), force, createName(metricName, metricpath));
- }
-
- public Timer timer(SolrInfoBean info, String metricName, String... metricpath) {
- return metricManager.timer(info, getRegistry(), createName(metricName, metricpath));
-
- }
-
- public MetricsInfo getParent() {
- return parent;
- }
-
- public MetricRegistry getRegistry() {
- return metricManager.registry(registry);
- }
- }
}
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetrics.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetrics.java
new file mode 100644
index 0000000..28aea4e
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetrics.java
@@ -0,0 +1,94 @@
+/*
+ * 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.metrics;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Meter;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.Timer;
+import org.apache.solr.core.SolrInfoBean;
+
+import static org.apache.solr.metrics.SolrMetricManager.makeName;
+
+public class SolrMetrics {
+ public final String registry;
+ public final SolrMetricManager metricManager;
+ public final String tag;
+ public final String scope;
+ private SolrMetrics parent;
+
+ public SolrMetrics(SolrMetricManager metricManager, String registry, String tag, String scope) {
+ this.registry = registry;
+ this.metricManager = metricManager;
+ this.tag = tag;
+ this.scope = scope;
+ }
+
+ public String getTag() {
+ return tag;
+ }
+
+ public void unregister() {
+ metricManager.unregisterGauges(registry, tag);
+ }
+
+ public SolrMetrics getChildInfo(SolrMetricProducer producer) {
+ SolrMetrics metricsInfo = new SolrMetrics(metricManager, registry, producer.getUniqueMetricTag(tag), scope);
+ metricsInfo.parent = this;
+ return metricsInfo;
+ }
+
+ public Meter meter(SolrInfoBean info, String metricName, String... metricpath) {
+ return metricManager.meter(info, getRegistry(), createName(metricName, metricpath));
+ }
+
+ private String createName(String metricName, String... metricpath) {
+ ArrayList<String> l = new ArrayList<>();
+ if(metricpath != null ) {
+ Collections.addAll(l, metricpath);
+ }
+ l.add(scope);
+ return makeName(l, metricName);
+ }
+
+ public Counter counter(SolrInfoBean info, String metricName, String... metricpath) {
+ return metricManager.counter(info, getRegistry(), createName(metricName, metricpath));
+
+ }
+
+ public void gauge(SolrInfoBean info, Gauge<?> gauge, boolean force, String metricName, String... metricpath) {
+ metricManager.registerGauge(info, getRegistry(), new SolrMetricManager.GaugeWrapper<>(gauge, tag), force, createName(metricName, metricpath));
+ }
+
+ public Timer timer(SolrInfoBean info, String metricName, String... metricpath) {
+ return metricManager.timer(info, getRegistry(), createName(metricName, metricpath));
+
+ }
+
+ public SolrMetrics getParent() {
+ return parent;
+ }
+
+ public MetricRegistry getRegistry() {
+ return metricManager.registry(registry);
+ }
+}
diff --git a/solr/core/src/java/org/apache/solr/search/FastLRUCache.java b/solr/core/src/java/org/apache/solr/search/FastLRUCache.java
index 2061b4e..5487987 100644
--- a/solr/core/src/java/org/apache/solr/search/FastLRUCache.java
+++ b/solr/core/src/java/org/apache/solr/search/FastLRUCache.java
@@ -29,6 +29,7 @@ import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.RamUsageEstimator;
import org.apache.solr.common.SolrException;
import org.apache.solr.metrics.MetricsMap;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.util.ConcurrentLRUCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -246,15 +247,15 @@ public class FastLRUCache<K, V> extends SolrCacheBase implements SolrCache<K, V>
}
- MetricsInfo metricsInfo;
+ SolrMetrics metricsInfo;
@Override
- public MetricsInfo getMetricsInfo() {
+ public SolrMetrics getMetrics() {
return metricsInfo;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
+ public void initializeMetrics(SolrMetrics info) {
metricsInfo = info.getChildInfo(this);
cacheMap = new MetricsMap((detailed, map) -> {
if (cache != null) {
diff --git a/solr/core/src/java/org/apache/solr/search/LFUCache.java b/solr/core/src/java/org/apache/solr/search/LFUCache.java
index 4b02364..0d69e4f 100644
--- a/solr/core/src/java/org/apache/solr/search/LFUCache.java
+++ b/solr/core/src/java/org/apache/solr/search/LFUCache.java
@@ -29,6 +29,7 @@ import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.RamUsageEstimator;
import org.apache.solr.common.SolrException;
import org.apache.solr.metrics.MetricsMap;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.util.ConcurrentLFUCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -224,7 +225,7 @@ public class LFUCache<K, V> implements SolrCache<K, V>, Accountable {
statsList.get(0).add(cache.getStats());
statsList.remove(cache.getStats());
cache.destroy();
- if (metricsInfo != null) metricsInfo.unregister();
+ if (solrMetrics != null) solrMetrics.unregister();
}
//////////////////////// SolrInfoMBeans methods //////////////////////
@@ -253,16 +254,16 @@ public class LFUCache<K, V> implements SolrCache<K, V>, Accountable {
}
- private MetricsInfo metricsInfo;
+ private SolrMetrics solrMetrics;
@Override
- public MetricsInfo getMetricsInfo() {
- return metricsInfo;
+ public SolrMetrics getMetrics() {
+ return solrMetrics;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- metricsInfo = info.getChildInfo(this);
+ public void initializeMetrics(SolrMetrics info) {
+ solrMetrics = info.getChildInfo(this);
cacheMap = new MetricsMap((detailed, map) -> {
if (cache != null) {
ConcurrentLFUCache.Stats stats = cache.getStats();
@@ -323,7 +324,7 @@ public class LFUCache<K, V> implements SolrCache<K, V>, Accountable {
}
});
- metricsInfo.metricManager.registerGauge(this, metricsInfo.registry, cacheMap, metricsInfo.getTag(), true, metricsInfo.scope, getCategory().toString());
+ solrMetrics.metricManager.registerGauge(this, solrMetrics.registry, cacheMap, solrMetrics.getTag(), true, solrMetrics.scope, getCategory().toString());
}
// for unit tests only
@@ -338,7 +339,7 @@ public class LFUCache<K, V> implements SolrCache<K, V>, Accountable {
@Override
public MetricRegistry getMetricRegistry() {
- return metricsInfo == null ? null : metricsInfo.getRegistry();
+ return solrMetrics == null ? null : solrMetrics.getRegistry();
}
diff --git a/solr/core/src/java/org/apache/solr/search/LRUCache.java b/solr/core/src/java/org/apache/solr/search/LRUCache.java
index 3edd23a..e265630 100644
--- a/solr/core/src/java/org/apache/solr/search/LRUCache.java
+++ b/solr/core/src/java/org/apache/solr/search/LRUCache.java
@@ -32,6 +32,7 @@ import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.RamUsageEstimator;
import org.apache.solr.common.SolrException;
import org.apache.solr.metrics.MetricsMap;
+import org.apache.solr.metrics.SolrMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -151,8 +152,8 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
}
/**
- *
- * @return Returns the description of this cache.
+ *
+ * @return Returns the description of this cache.
*/
private String generateDescription() {
String description = "LRU Cache(maxSize=" + getMaxSize() + ", initialSize=" + initialSize;
@@ -240,9 +241,9 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
// Don't do the autowarming in the synchronized block, just pull out the keys and values.
synchronized (other.map) {
-
+
int sz = autowarm.getWarmCount(other.map.size());
-
+
keys = new Object[sz];
vals = new Object[sz];
@@ -279,7 +280,7 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
@Override
public void close() {
- if(metricsInfo != null) metricsInfo.unregister();
+ if(solrMetrics != null) solrMetrics.unregister();
}
//////////////////////// SolrInfoMBeans methods //////////////////////
@@ -300,16 +301,16 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
return metricNames;
}
- MetricsInfo metricsInfo;
+ SolrMetrics solrMetrics;
@Override
- public MetricsInfo getMetricsInfo() {
- return metricsInfo;
+ public SolrMetrics getMetrics() {
+ return solrMetrics;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- metricsInfo = info.getChildInfo(this);
+ public void initializeMetrics(SolrMetrics m) {
+ solrMetrics = m.getChildInfo(this);
cacheMap = new MetricsMap((detailed, res) -> {
synchronized (map) {
res.put(LOOKUPS_PARAM, lookups);
@@ -334,7 +335,7 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
res.put("cumulative_evictions", stats.evictions.longValue());
res.put("cumulative_evictionsRamUsage", stats.evictionsRamUsage.longValue());
});
- metricsInfo.metricManager.registerGauge(this, metricsInfo.registry, cacheMap, metricsInfo.tag, true, metricsInfo.scope, getCategory().toString());
+ solrMetrics.metricManager.registerGauge(this, solrMetrics.registry, cacheMap, solrMetrics.tag, true, solrMetrics.scope, getCategory().toString());
}
// for unit tests only
@@ -344,7 +345,7 @@ public class LRUCache<K,V> extends SolrCacheBase implements SolrCache<K,V>, Acco
@Override
public MetricRegistry getMetricRegistry() {
- return metricsInfo ==null ?null:metricsInfo.getRegistry();
+ return solrMetrics ==null ?null: solrMetrics.getRegistry();
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/search/SolrCacheHolder.java b/solr/core/src/java/org/apache/solr/search/SolrCacheHolder.java
index 506d8bb..86f6b2d 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrCacheHolder.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrCacheHolder.java
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.Set;
import com.codahale.metrics.MetricRegistry;
+import org.apache.solr.metrics.SolrMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -140,7 +141,7 @@ public class SolrCacheHolder<K, V> implements SolrCache<K,V> {
}
@Override
- public void initializeMetrics(MetricsInfo info) {
+ public void initializeMetrics(SolrMetrics info) {
delegate.initializeMetrics(info);
}
diff --git a/solr/core/src/java/org/apache/solr/security/AuthenticationPlugin.java b/solr/core/src/java/org/apache/solr/security/AuthenticationPlugin.java
index 9a2c895..8044af9 100644
--- a/solr/core/src/java/org/apache/solr/security/AuthenticationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/AuthenticationPlugin.java
@@ -32,6 +32,7 @@ import org.apache.http.HttpRequest;
import org.apache.http.protocol.HttpContext;
import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.metrics.SolrMetricProducer;
+import org.apache.solr.metrics.SolrMetrics;
import org.eclipse.jetty.client.api.Request;
/**
@@ -137,25 +138,25 @@ public abstract class AuthenticationPlugin implements SolrInfoBean, SolrMetricPr
*/
public void closeRequest() {
}
- protected MetricsInfo metricsInfo;
+ protected SolrMetrics metrics;
@Override
- public MetricsInfo getMetricsInfo() {
- return metricsInfo;
+ public SolrMetrics getMetrics() {
+ return metrics;
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- metricsInfo = info.getChildInfo(this);
+ public void initializeMetrics(SolrMetrics metrics) {
+ this.metrics = metrics.getChildInfo(this);
// Metrics
- numErrors = metricsInfo.meter(this, "errors", getCategory().toString());
- requests = metricsInfo.counter(this, "requests", getCategory().toString());
- numAuthenticated = metricsInfo.counter(this, "authenticated",getCategory().toString());
- numPassThrough = metricsInfo.counter(this, "passThrough", getCategory().toString());
- numWrongCredentials = metricsInfo.counter(this, "failWrongCredentials",getCategory().toString());
- numMissingCredentials = metricsInfo.counter(this, "failMissingCredentials",getCategory().toString());
- requestTimes = metricsInfo.timer(this,"requestTimes", getCategory().toString());
- totalTime = metricsInfo.counter(this,"totalTime", getCategory().toString());
+ numErrors = this.metrics.meter(this, "errors", getCategory().toString());
+ requests = this.metrics.counter(this, "requests", getCategory().toString());
+ numAuthenticated = this.metrics.counter(this, "authenticated",getCategory().toString());
+ numPassThrough = this.metrics.counter(this, "passThrough", getCategory().toString());
+ numWrongCredentials = this.metrics.counter(this, "failWrongCredentials",getCategory().toString());
+ numMissingCredentials = this.metrics.counter(this, "failMissingCredentials",getCategory().toString());
+ requestTimes = this.metrics.timer(this,"requestTimes", getCategory().toString());
+ totalTime = this.metrics.counter(this,"totalTime", getCategory().toString());
metricNames.addAll(Arrays.asList("errors", "requests", "authenticated", "passThrough",
"failWrongCredentials", "failMissingCredentials", "requestTimes", "totalTime"));
}
@@ -182,7 +183,7 @@ public abstract class AuthenticationPlugin implements SolrInfoBean, SolrMetricPr
@Override
public MetricRegistry getMetricRegistry() {
- return metricsInfo == null ? null : metricsInfo.getRegistry();
+ return metrics == null ? null : metrics.getRegistry();
}
}
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
index fae9857..3c16ce6 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
@@ -31,7 +31,7 @@ import org.apache.solr.core.PluginInfo;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.metrics.MetricsMap;
-import org.apache.solr.metrics.SolrMetricProducer;
+import org.apache.solr.metrics.SolrMetrics;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
@@ -391,7 +391,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
static class RefreshablePluginHolder extends PluginBag.PluginHolder<SolrRequestHandler> {
private DumpRequestHandler rh;
- private SolrMetricProducer.MetricsInfo metricsInfo;
+ private SolrMetrics metricsInfo;
public RefreshablePluginHolder(PluginInfo info, DumpRequestHandler rh) {
super(info);
@@ -404,9 +404,9 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
}
void closeHandler() throws Exception {
- this.metricsInfo = rh.getMetricsInfo();
+ this.metricsInfo = rh.getMetrics();
if(metricsInfo.tag.contains(String.valueOf(rh.hashCode()))){
- //this created a new child metricsInfo
+ //this created a new child metrics
metricsInfo = metricsInfo.getParent();
}
this.rh.close();
@@ -440,14 +440,11 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
}
@Override
- public void initializeMetrics(MetricsInfo info) {
- super.initializeMetrics(info);
- MetricsMap metrics = new MetricsMap((detailed, map) -> {
- map.putAll(gaugevals);
- });
- metricsInfo.metricManager.registerGauge(this,
- metricsInfo.registry, metrics, metricsInfo.tag, true, "dumphandlergauge", getCategory().toString(),
- metricsInfo.scope);
+ public void initializeMetrics(SolrMetrics m) {
+ super.initializeMetrics(m);
+ MetricsMap metrics = new MetricsMap((detailed, map) -> map.putAll(gaugevals));
+ solrMetrics.gauge(this,
+ metrics, true, "dumphandlergauge", getCategory().toString());
}