You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2016/12/30 15:56:58 UTC
[22/50] [abbrv] lucene-solr:jira/solr-9854: SOLR-9805 Fix assertion
error on Windows where SystemLoadAverage is reported as -1. Don't expose
non-existent attributes.
SOLR-9805 Fix assertion error on Windows where SystemLoadAverage is reported as -1.
Don't expose non-existent attributes.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/56476fb8
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/56476fb8
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/56476fb8
Branch: refs/heads/jira/solr-9854
Commit: 56476fb8c70486c21324879f1bd1efc79df92ffb
Parents: 1d3fb3e
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Tue Dec 27 11:37:50 2016 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Tue Dec 27 11:39:13 2016 +0100
----------------------------------------------------------------------
.../solr/metrics/OperatingSystemMetricSet.java | 16 ++++++++++++++--
.../org/apache/solr/metrics/JvmMetricsTest.java | 3 ++-
2 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/56476fb8/solr/core/src/java/org/apache/solr/metrics/OperatingSystemMetricSet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/OperatingSystemMetricSet.java b/solr/core/src/java/org/apache/solr/metrics/OperatingSystemMetricSet.java
index b26386a..34ef5d1 100644
--- a/solr/core/src/java/org/apache/solr/metrics/OperatingSystemMetricSet.java
+++ b/solr/core/src/java/org/apache/solr/metrics/OperatingSystemMetricSet.java
@@ -17,11 +17,15 @@
package org.apache.solr.metrics;
import javax.management.JMException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.invoke.MethodHandles;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import com.codahale.metrics.JmxAttributeGauge;
import com.codahale.metrics.Metric;
@@ -67,9 +71,17 @@ public class OperatingSystemMetricSet implements MetricSet {
try {
final ObjectName on = new ObjectName("java.lang:type=OperatingSystem");
// verify that it exists
- mBeanServer.getMBeanInfo(on);
+ MBeanInfo info = mBeanServer.getMBeanInfo(on);
+ // collect valid attributes
+ Set<String> attributes = new HashSet<>();
+ for (MBeanAttributeInfo ai : info.getAttributes()) {
+ attributes.add(ai.getName());
+ }
for (String metric : METRICS) {
- metrics.put(metric, new JmxAttributeGauge(mBeanServer, on, metric));
+ // verify that an attribute exists before attempting to add it
+ if (attributes.contains(metric)) {
+ metrics.put(metric, new JmxAttributeGauge(mBeanServer, on, metric));
+ }
}
} catch (JMException ignored) {
log.debug("Unable to load OperatingSystem MBean", ignored);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/56476fb8/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
----------------------------------------------------------------------
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 6d597cb..72adc68 100644
--- a/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/JvmMetricsTest.java
@@ -48,7 +48,8 @@ public class JvmMetricsTest extends SolrJettyTestBase {
continue;
}
double value = ((Number)gauge.getValue()).doubleValue();
- assertTrue(value >= 0);
+ // SystemLoadAverage on Windows may be -1.0
+ assertTrue("unexpected value of " + metric + ": " + value, value >= 0 || value == -1.0);
}
}