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());
 
     }