You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/03/30 17:25:14 UTC

[45/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10362: "Memory Pool not found" error when reporting JVM metrics.

SOLR-10362: "Memory Pool not found" error when reporting JVM metrics.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cb20eae1
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cb20eae1
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cb20eae1

Branch: refs/heads/jira/solr-6203
Commit: cb20eae1789442286f680f8dcfaf914394aed7a3
Parents: 0b3ca1b
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Mon Mar 27 22:17:34 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Mon Mar 27 22:19:03 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt                                         |  2 ++
 .../src/java/org/apache/solr/util/stats/MetricUtils.java | 11 ++++++++++-
 .../test/org/apache/solr/util/stats/MetricUtilsTest.java |  6 ++++++
 3 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0b6faf8..b380e6b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -137,6 +137,8 @@ Bug Fixes
 
 * SOLR-10108: bin/solr script recursive copy broken (Erick Erickson)
 
+* SOLR-10362: "Memory Pool not found" error when reporting JVM metrics. (ab)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
index ba1284e..9809070 100644
--- a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.util.stats;
 
+import java.lang.invoke.MethodHandles;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -40,11 +41,14 @@ import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.metrics.AggregateMetric;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Metrics specific utility functions.
  */
 public class MetricUtils {
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String METRIC_NAME = "metric";
   public static final String VALUE = "value";
@@ -208,7 +212,12 @@ public class MetricUtils {
             consumer.accept(n, convertCounter(counter, compact));
           } else if (metric instanceof Gauge) {
             Gauge gauge = (Gauge) metric;
-            consumer.accept(n, convertGauge(gauge, compact));
+            try {
+              consumer.accept(n, convertGauge(gauge, compact));
+            } catch (InternalError ie) {
+              LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
+              consumer.accept(n, null);
+            }
           } else if (metric instanceof Meter) {
             Meter meter = (Meter) metric;
             consumer.accept(n, convertMeter(meter));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
index 35caef8..fe98157 100644
--- a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
@@ -81,6 +81,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
     am.set("bar", 2);
     Gauge<String> gauge = () -> "foobar";
     registry.register("gauge", gauge);
+    Gauge<Long> error = () -> {throw new InternalError("expected error");};
+    registry.register("expected.error", error);
     MetricUtils.toMaps(registry, Collections.singletonList(MetricFilter.ALL), MetricFilter.ALL,
         false, false, false, (k, o) -> {
       Map v = (Map)o;
@@ -106,6 +108,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
         update = (Map<String, Object>)values.get("bar");
         assertEquals(2, update.get("value"));
         assertEquals(2, update.get("updateCount"));
+      } else if (k.startsWith("expected.error")) {
+        assertNull(v);
       }
     });
     // test compact format
@@ -143,6 +147,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
             update = (Map<String, Object>)values.get("bar");
             assertEquals(2, update.get("value"));
             assertEquals(2, update.get("updateCount"));
+          } else if (k.startsWith("expected.error")) {
+            assertNull(o);
           } else {
             Map v = (Map)o;
             assertEquals(1L, v.get("count"));