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; package com.google.gerrit.metrics.proc;
import static com.google.common.base.Preconditions.checkState;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean; import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@@ -38,10 +36,12 @@ class OperatingSystemMXBeanProvider {
"com.sun.management.UnixOperatingSystemMXBean", "com.sun.management.UnixOperatingSystemMXBean",
"com.ibm.lang.management.UnixOperatingSystemMXBean")) { "com.ibm.lang.management.UnixOperatingSystemMXBean")) {
try { try {
Class.forName(name); Class<?> impl = Class.forName(name);
return new OperatingSystemMXBeanProvider(sys, name); if (impl.isInstance(sys)) {
return new OperatingSystemMXBeanProvider(sys);
}
} catch (ReflectiveOperationException e) { } 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"); 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 { throws ReflectiveOperationException {
checkState(Class.forName(name).isInstance(sys));
this.sys = sys; this.sys = sys;
getProcessCpuTime = sys.getClass().getMethod("getProcessCpuTime", new Class[] {}); getProcessCpuTime = sys.getClass().getMethod("getProcessCpuTime", new Class[] {});
getProcessCpuTime.setAccessible(true); getProcessCpuTime.setAccessible(true);