blob: 1a1fb775536366e06eee75aaf0480ef4de53ae61 [file] [log] [blame]
package org.apache.helix.monitoring.mbeans;
import java.util.concurrent.ThreadPoolExecutor;
import javax.management.JMException;
import javax.management.ObjectName;
public class ThreadPoolExecutorMonitor implements ThreadPoolExecutorMonitorMBean {
public static final String TYPE = "Type";
private ObjectName _objectName;
private ThreadPoolExecutor _executor;
private String _type;
public ThreadPoolExecutorMonitor(String type, ThreadPoolExecutor executor)
throws JMException {
_type = type;
_executor = executor;
_objectName = MBeanRegistrar
.register(this, MonitorDomainNames.HelixThreadPoolExecutor.name(), TYPE, type);
}
public void unregister() {
MBeanRegistrar.unregister(_objectName);
}
@Override
public String getSensorName() {
return String
.format("%s.%s", MonitorDomainNames.HelixThreadPoolExecutor.name(), _type);
}
@Override
public int getThreadPoolCoreSizeGauge() {
return _executor.getCorePoolSize();
}
@Override
public int getThreadPoolMaxSizeGauge() {
return _executor.getMaximumPoolSize();
}
@Override
public int getQueueSizeGauge() {
return _executor.getQueue().size();
}
@Override
public int getNumOfActiveThreadsGauge() {
return _executor.getActiveCount();
}
}