summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2017-03-07 19:49:49 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2017-03-09 08:11:37 +0000
commit03ee3f6130f5411dcfce5ef23a0bcf6e0aa689d9 (patch)
treea962d1ddf918da0390bdf1eb5e93e26e60c132a6
parent4819be7d11be9374437aa412111ab49dd8980976 (diff)
OperatingSystemMXBeanProvider: Don't throw IllegalStateException
If the implementation of OperatingSystemMXBeanProvider can't be instantiated, simply return null and thus skip the CPU and file descriptors metrics, rather than throwing IllegalStateException which prevents the site from starting. Bug: Issue 5727 Change-Id: I8c8e155c274e788dbea07c64ae1c95aac09df35b
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java14
1 files changed, 7 insertions, 7 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java b/gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java
index 696a68734d..4eccf53109 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java
@@ -14,8 +14,6 @@
package com.google.gerrit.metrics.proc;
-import static com.google.common.base.Preconditions.checkState;
-
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
@@ -40,10 +38,13 @@ class OperatingSystemMXBeanProvider {
"com.sun.management.UnixOperatingSystemMXBean",
"com.ibm.lang.management.UnixOperatingSystemMXBean")) {
try {
- Class.forName(name);
- return new OperatingSystemMXBeanProvider(sys, name);
+ Class<?> impl = Class.forName(name);
+ if (impl.isInstance(sys)) {
+ return new OperatingSystemMXBeanProvider(sys);
+ }
} catch (ReflectiveOperationException e) {
- log.debug("No implementation for " + name);
+ log.debug(String.format(
+ "No implementation for %s: %s", name, e.getMessage()));
}
}
log.warn("No implementation of UnixOperatingSystemMXBean found");
@@ -51,9 +52,8 @@ class OperatingSystemMXBeanProvider {
}
}
- private OperatingSystemMXBeanProvider(OperatingSystemMXBean sys, String name)
+ private OperatingSystemMXBeanProvider(OperatingSystemMXBean sys)
throws ReflectiveOperationException {
- checkState(Class.forName(name).isInstance(sys));
this.sys = sys;
getProcessCpuTime =
sys.getClass().getMethod("getProcessCpuTime", new Class[] {});