Fix MBean registration

Change-Id: I6f6b8641f6c3e8ab9f625594085014272305656a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Matthias Sohn 2019-12-13 17:32:51 +01:00
parent 42f0c7c9cb
commit 549c3acc5f
2 changed files with 14 additions and 7 deletions

View File

@ -458,7 +458,7 @@ else if (eb < 4)
mbean = new StatsRecorderImpl();
statsRecorder = mbean;
Monitoring.registerMBean(WindowCacheStats.class, "block_cache"); //$NON-NLS-1$
Monitoring.registerMBean(mbean, "block_cache"); //$NON-NLS-1$
if (maxFiles < 1)
throw new IllegalArgumentException(JGitText.get().openFilesMustBeAtLeast1);

View File

@ -39,19 +39,26 @@ public class Monitoring {
* Register a MBean with the platform MBean server
*
* @param mbean
* the mbean interface to register
* the mbean object to register
* @param metricName
* name of the JGit metric, will be prefixed with
* "org.eclipse.jgit/"
* @return the registered mbean's object instance
*/
public static @Nullable ObjectInstance registerMBean(Class mbean,
public static @Nullable ObjectInstance registerMBean(Object mbean,
String metricName) {
boolean register;
boolean register = false;
try {
register = SystemReader.getInstance().getUserConfig().getBoolean(
Class<?> interfaces[] = mbean.getClass().getInterfaces();
for (Class<?> i : interfaces) {
register = SystemReader.getInstance().getUserConfig()
.getBoolean(
ConfigConstants.CONFIG_JMX_SECTION,
mbean.getSimpleName(), false);
i.getSimpleName(), false);
if (register) {
break;
}
}
} catch (IOException | ConfigInvalidException e) {
LOG.error(e.getMessage(), e);
return null;
@ -61,7 +68,7 @@ public class Monitoring {
}
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
try {
ObjectName mbeanName = objectName(mbean, metricName);
ObjectName mbeanName = objectName(mbean.getClass(), metricName);
if (server.isRegistered(mbeanName)) {
server.unregisterMBean(mbeanName);
}