Merge branch 'stable-2.13'
* stable-2.13: OperatingSystemMXBeanProvider: Don't throw IllegalStateException Change-Id: Ie390e85b2175248aef52859a4792a639c52df39a
This commit is contained in:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user