Merge branch 'stable-2.13'

* stable-2.13:
  OperatingSystemMXBeanProvider: Don't throw IllegalStateException

Change-Id: Ie390e85b2175248aef52859a4792a639c52df39a
This commit is contained in:
David Pursehouse
2017-03-14 11:29:49 +09:00

View File

@@ -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;
@@ -38,10 +36,12 @@ 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");
@@ -49,9 +49,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[] {});
getProcessCpuTime.setAccessible(true);