You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/20 23:09:34 UTC
[lucene-solr] branch reference_impl_dev updated: @593 You damn
metrics will be fast, I insist.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new c37f15a @593 You damn metrics will be fast, I insist.
c37f15a is described below
commit c37f15ac1ac029f773a52506e438b52ffd37e6f8
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Aug 20 18:08:46 2020 -0500
@593 You damn metrics will be fast, I insist.
---
.../src/java/org/apache/solr/core/SolrCore.java | 18 +-
.../java/org/apache/solr/metrics/MetricsMap.java | 4 +
.../org/apache/solr/metrics/SolrMetricManager.java | 189 +++++++++++++--------
.../apache/solr/metrics/SolrMetricRegistry.java | 14 ++
.../apache/solr/metrics/SolrMetricsContext.java | 4 +-
.../java/org/apache/solr/search/CaffeineCache.java | 26 +--
.../org/apache/solr/search/SolrIndexSearcher.java | 22 ++-
.../src/test/org/apache/solr/CursorPagingTest.java | 4 +-
.../solr/handler/admin/StatsReloadRaceTest.java | 1 +
.../org/apache/solr/metrics/JvmMetricsTest.java | 2 +-
.../solr/search/TestReRankQParserPlugin.java | 4 +-
.../apache/solr/search/TestSolrFieldCacheBean.java | 4 +-
.../apache/solr/search/TestSolrQueryParser.java | 8 +-
.../solr/search/join/TestScoreJoinQPScore.java | 2 +-
14 files changed, 180 insertions(+), 122 deletions(-)
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 2ba11e1..f988a7c 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -54,7 +54,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -252,6 +251,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
private volatile boolean isClosed = false;
private final PackageListeners packageListeners = new PackageListeners(this);
+ private volatile boolean unregisterMetrics = true;
public Set<String> getMetricNames() {
return metricNames;
@@ -712,13 +712,13 @@ public final class SolrCore implements SolrInfoBean, Closeable {
} else {
currentCore = this;
}
-
+ this.unregisterMetrics = false;
boolean success = false;
SolrCore core = null;
try {
CoreDescriptor cd = new CoreDescriptor(name, getCoreDescriptor());
cd.loadExtraProperties(); //Reload the extra properties
-
+ coreMetricManager.close();
core = new SolrCore(coreContainer, getName(), coreConfig, cd, getDataDir(), updateHandler, solrDelPolicy, currentCore, true);
// we open a new IndexWriter to pick up the latest config
@@ -1618,10 +1618,12 @@ public final class SolrCore implements SolrInfoBean, Closeable {
List<Callable<Object>> closeCalls = new ArrayList<Callable<Object>>();
closeCalls.addAll(closeHookCalls);
- closeCalls.add(() -> {
- IOUtils.closeQuietly(coreMetricManager);
- return "SolrCoreMetricManager";
- });
+ if (unregisterMetrics) {
+ closeCalls.add(() -> {
+ // IOUtils.closeQuietly(coreMetricManager);
+ return "SolrCoreMetricManager";
+ });
+ }
closeCalls.add(() -> {
IOUtils.closeQuietly(reqHandlers);
return "reqHandlers";
@@ -1712,7 +1714,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
});
closer.addCollect();
- closeHookCalls = new ArrayList<Callable<Object>>();
+ closeHookCalls = new ArrayList<>();
if (closeHooks != null) {
for (CloseHook hook : closeHooks) {
diff --git a/solr/core/src/java/org/apache/solr/metrics/MetricsMap.java b/solr/core/src/java/org/apache/solr/metrics/MetricsMap.java
index abea099..abb7f22 100644
--- a/solr/core/src/java/org/apache/solr/metrics/MetricsMap.java
+++ b/solr/core/src/java/org/apache/solr/metrics/MetricsMap.java
@@ -82,6 +82,10 @@ public class MetricsMap implements Gauge<Map<String,Object>>, DynamicMBean {
}
public Map<String,Object> getValue(boolean detailed) {
+ return getValue(detailed, allowCache);
+ }
+
+ public Map<String,Object> getValue(boolean detailed, boolean allowCache) {
if (allowCache) {
Map<String,Object> cachedStats = this.cachedValue;
if (cachedStats != null && (System.nanoTime() - cachedValueUpdatedAt) < CACHE_TIME) {
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 c05b1c6..bd7ca10 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -104,12 +104,13 @@ public class SolrMetricManager {
private final ConcurrentMap<String, MetricRegistry> registries = new ConcurrentHashMap<>(32);
+ private static final ConcurrentMap<String, MetricRegistry> REGISTRIES = new ConcurrentHashMap<>(32);
+
private final Map<String, Map<String, SolrMetricReporter>> reporters = new HashMap<>(32);
- private final Lock reportersLock = new ReentrantLock();
- private final Lock swapLock = new ReentrantLock();
- private final Lock sharedLock = new ReentrantLock();
+ private final Map<String, Set<String>> tags = new ConcurrentHashMap<>(32);
+ private final Lock reportersLock = new ReentrantLock();
public static final int DEFAULT_CLOUD_REPORTER_PERIOD = 60;
@@ -369,18 +370,11 @@ public class SolrMetricManager {
*/
public Set<String> registryNames() {
Set<String> set = new HashSet<>();
- swapLock.lock();
- try {
- set.addAll(registries.keySet());
- } finally {
- swapLock.unlock();
- }
- sharedLock.lock();
- try {
- set.addAll(SharedMetricRegistries.names());
- } finally {
- sharedLock.unlock();
- }
+
+ set.addAll(registries.keySet());
+
+ set.addAll(SharedMetricRegistries.names());
+
return set;
}
@@ -451,19 +445,33 @@ public class SolrMetricManager {
public MetricRegistry registry(String registry) {
registry = enforcePrefix(registry);
if (isSharedRegistry(registry)) {
- sharedLock.lock();
- try {
- return SharedMetricRegistries.getOrCreate(registry);
- } finally {
- sharedLock.unlock();
- }
+
+
+ MetricRegistry reg = REGISTRIES.get(registry);
+ if (reg == null) {
+ reg = new SolrMetricRegistry();
+ }
+
+ MetricRegistry race = REGISTRIES.putIfAbsent(registry, reg);
+ if (race != null) {
+ return race;
+ }
+
+ return reg;
+
} else {
- swapLock.lock();
- try {
- return getOrCreateRegistry(registries, registry);
- } finally {
- swapLock.unlock();
- }
+
+ MetricRegistry reg = registries.get(registry);
+ if (reg == null) {
+ reg = new SolrMetricRegistry();
+ }
+
+ MetricRegistry race = registries.putIfAbsent(registry, reg);
+ if (race != null) {
+ return race;
+ }
+
+ return reg;
}
}
@@ -493,19 +501,9 @@ public class SolrMetricManager {
// make sure we use a name with prefix
registry = enforcePrefix(registry);
if (isSharedRegistry(registry)) {
- sharedLock.lock();
- try {
- SharedMetricRegistries.remove(registry);
- } finally {
- sharedLock.unlock();
- }
+ REGISTRIES.remove(registry);
} else {
- swapLock.lock();
- try {
- registries.remove(registry);
- } finally {
- swapLock.unlock();
- }
+ registries.remove(registry);
}
}
@@ -523,25 +521,22 @@ public class SolrMetricManager {
registry1 = enforcePrefix(registry1);
registry2 = enforcePrefix(registry2);
if (isSharedRegistry(registry1) || isSharedRegistry(registry2)) {
- throw new UnsupportedOperationException("Cannot swap shared registry: " + registry1 + ", " + registry2);
+ throw new UnsupportedOperationException(
+ "Cannot swap shared registry: " + registry1 + ", " + registry2);
}
- swapLock.lock();
- try {
- MetricRegistry from = registries.get(registry1);
- MetricRegistry to = registries.get(registry2);
- if (from == to) {
- return;
- }
- MetricRegistry reg1 = registries.remove(registry1);
- MetricRegistry reg2 = registries.remove(registry2);
- if (reg2 != null) {
- registries.put(registry1, reg2);
- }
- if (reg1 != null) {
- registries.put(registry2, reg1);
- }
- } finally {
- swapLock.unlock();
+
+ MetricRegistry from = registries.get(registry1);
+ MetricRegistry to = registries.get(registry2);
+ if (from == to) {
+ return;
+ }
+ MetricRegistry reg1 = registries.remove(registry1);
+ MetricRegistry reg2 = registries.remove(registry2);
+ if (reg2 != null) {
+ registries.put(registry1, reg2);
+ }
+ if (reg1 != null) {
+ registries.put(registry2, reg1);
}
}
@@ -773,32 +768,78 @@ public class SolrMetricManager {
}
public String registerGauge(SolrMetricsContext context, String registry, Gauge<?> gauge, String tag, boolean force, String metricName, String... metricPath) {
- return registerMetric(context, registry, new GaugeWrapper(gauge, tag), force, metricName, metricPath);
+ Set<String> names = tags.get(tag);
+ if (names == null) {
+ names = ConcurrentHashMap.newKeySet();
+ Set<String> race = tags.putIfAbsent(tag, names);
+ if (race != null) {
+ names = race;
+ }
+ }
+
+ String path = registerMetric(context, registry, gauge, force, metricName, metricPath);
+ names.add(path);
+ return path;
}
- public int unregisterGauges(String registryName, String tagSegment) {
- if (tagSegment == null) {
- return 0;
- }
- MetricRegistry registry = registry(registryName);
- if (registry == null) return 0;
+// public int unregisterGauges(String registryName, Set<String> gaugeNames) {
+// if (gaugeNames.size() == 0) {
+// return 0;
+// }
+// MetricRegistry registry = registry(registryName);
+// if (registry == null) return 0;
+// AtomicInteger removed = new AtomicInteger();
+//
+// for (String name : gaugeNames) {
+// if (registry.remove(name)) {
+// removed.incrementAndGet();
+// }
+// }
+// return removed.get();
+// }
+
+ public int unregisterGauges(String registryName, String tag) {
AtomicInteger removed = new AtomicInteger();
+ Set<String> names = tags.get(tag);
+ if (names != null) {
+ MetricRegistry registry = registry(registryName);
+ if (registry == null) return 0;
- Set<Map.Entry<String,Metric>> entries = registry.getMetrics().entrySet();
- for (Map.Entry<String,Metric> entry : entries) {
- Metric metric = entry.getValue();
- if (metric instanceof GaugeWrapper) {
- GaugeWrapper wrapper = (GaugeWrapper) metric;
- boolean toRemove = wrapper.getTag().contains(tagSegment);
- if (toRemove) {
- removed.incrementAndGet();
- registry.remove(entry.getKey());
- }
+
+ for (String name : names) {
+ if (registry.remove(name)) {
+ removed.incrementAndGet();
}
+ }
}
return removed.get();
}
+//
+// public int unregisterGauges(String registryName, String tagSegment) {
+// if (tagSegment == null) {
+// return 0;
+// }
+// MetricRegistry registry = registry(registryName);
+// if (registry == null) return 0;
+// AtomicInteger removed = new AtomicInteger();
+//
+// Set<Map.Entry<String,Metric>> entries = registry.getMetrics().entrySet();
+// for (Map.Entry<String,Metric> entry : entries) {
+// Metric metric = entry.getValue();
+// if (metric instanceof GaugeWrapper) {
+// GaugeWrapper wrapper = (GaugeWrapper) metric;
+// boolean toRemove = wrapper.getTag().contains(tagSegment);
+// if (toRemove) {
+// removed.incrementAndGet();
+// registry.remove(entry.getKey());
+// }
+// }
+// }
+// return removed.get();
+// }
+
+
/**
* This method creates a hierarchical name with arbitrary levels of hierarchy
*
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricRegistry.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricRegistry.java
new file mode 100644
index 0000000..b75c4f8
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricRegistry.java
@@ -0,0 +1,14 @@
+package org.apache.solr.metrics;
+
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricRegistry;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+public class SolrMetricRegistry extends MetricRegistry {
+ protected ConcurrentMap<String,Metric> buildMap() {
+ // some hold as many 500+
+ return new ConcurrentHashMap<>(712);
+ }
+}
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricsContext.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricsContext.java
index 0f8c4f0..6297014 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricsContext.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricsContext.java
@@ -41,8 +41,6 @@ public class SolrMetricsContext {
final String tag;
private final Set<String> metricNames = ConcurrentHashMap.newKeySet(128);
- private final Set<String> gaugeNames = ConcurrentHashMap.newKeySet(128);
-
public SolrMetricsContext(SolrMetricManager metricManager, String registryName, String tag) {
this.registryName = registryName;
this.metricManager = metricManager;
@@ -134,7 +132,7 @@ public class SolrMetricsContext {
* Convenience method for {@link SolrMetricManager#registerGauge(SolrMetricsContext, String, Gauge, String, boolean, String, String...)}.
*/
public void gauge(Gauge<?> gauge, boolean force, String metricName, String... metricPath) {
- gaugeNames.add(metricManager.registerGauge(this, registryName, gauge, tag, force, metricName, metricPath));
+ metricManager.registerGauge(this, registryName, gauge, tag, force, metricName, metricPath);
}
/**
diff --git a/solr/core/src/java/org/apache/solr/search/CaffeineCache.java b/solr/core/src/java/org/apache/solr/search/CaffeineCache.java
index d779864..8184b88 100644
--- a/solr/core/src/java/org/apache/solr/search/CaffeineCache.java
+++ b/solr/core/src/java/org/apache/solr/search/CaffeineCache.java
@@ -230,19 +230,19 @@ public class CaffeineCache<K, V> extends SolrCacheBase implements SolrCache<K, V
@Override
public void close() throws IOException {
- try (ParWork closer = new ParWork(this, true)) {
- closer.collect("superClose", () -> {
- try {
- SolrCache.super.close();
- } catch (IOException e) {
- log.warn("IOException on close", e);
- }
- });
- closer.collect("invalidateAll", () -> {
- cache.invalidateAll();
- });
- closer.addCollect();
- }
+ SolrCache.super.close();
+// try (ParWork closer = new ParWork(this, true)) {
+// closer.collect("superClose", () -> {
+// try {
+// SolrCache.super.close();
+// } catch (IOException e) {
+// log.warn("IOException on close", e);
+// }
+// });
+// closer.collect("invalidateAll", () -> {
+// cache.invalidateAll();
+// });
+// }
ramBytes.reset();
}
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index 7e50177..0cbc6ec 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -500,16 +500,14 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
}
}
-// if (releaseDirectory) {
-// directoryFactory.release(getIndexReader().directory());
-// }
-
- try {
- SolrInfoBean.super.close();
- } catch (Exception e) {
- log.warn("Exception closing", e);
- }
+// leave our metrics, they will be replaced and we may be doing a reload
+// and would clear the new cores searcher stats
+// try {
+// SolrInfoBean.super.close();
+// } catch (Exception e) {
+// log.warn("Exception closing", e);
+// }
// do this at the end so it only gets done if there are no exceptions
numCloses.incrementAndGet();
@@ -2308,10 +2306,10 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
// statsCache metrics
parentContext.gauge(
new MetricsMap((detailed, map) -> {
- ConcurrentMap smap = new ConcurrentHashMap(1);
- smap.putAll(statsCache.getCacheMetrics().getSnapshot());
+ map.putAll(statsCache.getCacheMetrics().getSnapshot());
map.put("statsCacheImpl", statsCache.getClass().getSimpleName());
- }, false), true, "statsCache", Category.CACHE.toString(), scope);
+ }, true), true, "statsCache", Category.CACHE.toString(), scope);
+ // we have to cache due to the size stuff, maybe improve granularity
}
private static class FilterImpl extends Filter {
diff --git a/solr/core/src/test/org/apache/solr/CursorPagingTest.java b/solr/core/src/test/org/apache/solr/CursorPagingTest.java
index 5aa8fef..181b5da 100644
--- a/solr/core/src/test/org/apache/solr/CursorPagingTest.java
+++ b/solr/core/src/test/org/apache/solr/CursorPagingTest.java
@@ -523,10 +523,10 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
final Collection<String> allFieldNames = getAllSortFieldNames();
final MetricsMap filterCacheStats =
- (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.filterCache")).getGauge();
+ (MetricsMap)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.filterCache");
assertNotNull(filterCacheStats);
final MetricsMap queryCacheStats =
- (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.queryResultCache")).getGauge();
+ (MetricsMap)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.queryResultCache");
assertNotNull(queryCacheStats);
final long preQcIn = (Long) queryCacheStats.getValue().get("inserts");
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java b/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
index b4ae67b..e3b339c 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
@@ -124,6 +124,7 @@ public class StatsReloadRaceTest extends SolrTestCaseJ4 {
// small window between core load and before searcher metrics are registered
// so we may have to check a few times, and then fail softly if reload is not complete yet
NamedList metrics = (NamedList)values.get("metrics");
+ System.out.println("metrics:" + metrics);
if (metrics == null) {
if (softFail) {
return false;
diff --git a/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java b/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
index 521bdbd..3800a39 100644
--- a/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
@@ -100,7 +100,7 @@ public class JvmMetricsTest extends SolrJettyTestBase {
}
SolrMetricManager metricManager = jetty.getCoreContainer().getMetricManager();
Map<String,Metric> metrics = metricManager.registry("solr.jvm").getMetrics();
- MetricsMap map = (MetricsMap)((SolrMetricManager.GaugeWrapper)metrics.get("system.properties")).getGauge();
+ MetricsMap map = (MetricsMap)metrics.get("system.properties");
assertNotNull(map);
Map<String,Object> values = map.getValue();
System.getProperties().forEach((k, v) -> {
diff --git a/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
index b3e01f2..acbc892 100644
--- a/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
@@ -383,8 +383,8 @@ public class TestReRankQParserPlugin extends SolrTestCaseJ4 {
"//result/doc[5]/str[@name='id'][.='2']"
);
- MetricsMap metrics = (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.queryResultCache")).getGauge();
- Map<String,Object> stats = metrics.getValue();
+ MetricsMap metrics = (MetricsMap) h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.queryResultCache");
+ Map<String,Object> stats = metrics.getValue(true, false);
long inserts = (Long) stats.get("inserts");
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrFieldCacheBean.java b/solr/core/src/test/org/apache/solr/search/TestSolrFieldCacheBean.java
index 49b754f..de956e5 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrFieldCacheBean.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrFieldCacheBean.java
@@ -77,7 +77,7 @@ public class TestSolrFieldCacheBean extends SolrTestCaseJ4 {
SolrMetricManager metricManager = h.getCoreContainer().getMetricManager();
SolrMetricsContext solrMetricsContext = new SolrMetricsContext(metricManager, registryName, "foo");
mbean.initializeMetrics(solrMetricsContext, null);
- MetricsMap metricsMap = (MetricsMap)((SolrMetricManager.GaugeWrapper)metricManager.registry(registryName).getMetrics().get("CACHE.fieldCache")).getGauge();
+ MetricsMap metricsMap = (MetricsMap)metricManager.registry(registryName).getMetrics().get("CACHE.fieldCache");
Map<String, Object> metrics = checkJmx ? metricsMap.getValue(true) : metricsMap.getValue();
assertTrue(((Number)metrics.get("entries_count")).longValue() > 0);
assertNotNull(metrics.get("total_size"));
@@ -91,7 +91,7 @@ public class TestSolrFieldCacheBean extends SolrTestCaseJ4 {
SolrMetricManager metricManager = h.getCoreContainer().getMetricManager();
SolrMetricsContext solrMetricsContext = new SolrMetricsContext(metricManager, registryName, "foo");
mbean.initializeMetrics(solrMetricsContext, null);
- MetricsMap metricsMap = (MetricsMap)((SolrMetricManager.GaugeWrapper)metricManager.registry(registryName).getMetrics().get("CACHE.fieldCache")).getGauge();
+ MetricsMap metricsMap = (MetricsMap)metricManager.registry(registryName).getMetrics().get("CACHE.fieldCache");
Map<String, Object> metrics = checkJmx ? metricsMap.getValue(true) : metricsMap.getValue();
assertTrue(((Number)metrics.get("entries_count")).longValue() > 0);
assertNull(metrics.get("total_size"));
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
index 6ef4d27..98edb08 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
@@ -550,11 +550,11 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
assertU(commit()); // arg... commit no longer "commits" unless there has been a change.
- final MetricsMap filterCacheStats = (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry()
- .getMetrics().get("CACHE.searcher.filterCache")).getGauge();
+ final MetricsMap filterCacheStats = (MetricsMap)h.getCore().getCoreMetricManager().getRegistry()
+ .getMetrics().get("CACHE.searcher.filterCache");
assertNotNull(filterCacheStats);
- final MetricsMap queryCacheStats = (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry()
- .getMetrics().get("CACHE.searcher.queryResultCache")).getGauge();
+ final MetricsMap queryCacheStats = (MetricsMap)h.getCore().getCoreMetricManager().getRegistry()
+ .getMetrics().get("CACHE.searcher.queryResultCache");
assertNotNull(queryCacheStats);
diff --git a/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java b/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java
index 8813b64..d1cbc48 100644
--- a/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java
+++ b/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java
@@ -204,7 +204,7 @@ public class TestScoreJoinQPScore extends SolrTestCaseJ4 {
Map<String, Metric> metrics = h.getCoreContainer().getMetricManager().registry(h.getCore().getCoreMetricManager().getRegistryName()).getMetrics();
@SuppressWarnings("rawtypes")
- MetricsMap mm = (MetricsMap)((SolrMetricManager.GaugeWrapper)metrics.get("CACHE.searcher.queryResultCache")).getGauge();
+ MetricsMap mm = (MetricsMap)metrics.get("CACHE.searcher.queryResultCache");
{
Map<String,Object> statPre = mm.getValue();
h.query(req("q", "{!join from=movieId_s to=id score=Avg}title:first", "fl", "id", "omitHeader", "true"));