YARN-9644. First RMContext object is always leaked during switch over. Contributed by Bibin A Chundatt.
(cherry picked from commit d18986e4e8
)
This commit is contained in:
parent
46177ade8b
commit
9eb96b0fbf
|
@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
|
||||
import javax.management.NotCompliantMBeanException;
|
||||
import javax.management.ObjectName;
|
||||
import javax.management.StandardMBean;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
@ -42,6 +43,7 @@ public class RMNMInfo implements RMNMInfoBeans {
|
|||
private static final Log LOG = LogFactory.getLog(RMNMInfo.class);
|
||||
private RMContext rmContext;
|
||||
private ResourceScheduler scheduler;
|
||||
private ObjectName mbeanObjectName;
|
||||
|
||||
/**
|
||||
* Constructor for RMNMInfo registers the bean with JMX.
|
||||
|
@ -55,14 +57,17 @@ public class RMNMInfo implements RMNMInfoBeans {
|
|||
|
||||
StandardMBean bean;
|
||||
try {
|
||||
bean = new StandardMBean(this,RMNMInfoBeans.class);
|
||||
MBeans.register("ResourceManager", "RMNMInfo", bean);
|
||||
bean = new StandardMBean(this, RMNMInfoBeans.class);
|
||||
mbeanObjectName = MBeans.register("ResourceManager", "RMNMInfo", bean);
|
||||
} catch (NotCompliantMBeanException e) {
|
||||
LOG.warn("Error registering RMNMInfo MBean", e);
|
||||
LOG.warn("Error registering RMNMInfo MBean", e);
|
||||
}
|
||||
LOG.info("Registered RMNMInfo MBean");
|
||||
}
|
||||
|
||||
public void unregister() {
|
||||
MBeans.unregister(mbeanObjectName);
|
||||
}
|
||||
|
||||
static class InfoMap extends LinkedHashMap<String, Object> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -616,6 +616,7 @@ public class ResourceManager extends CompositeService
|
|||
private ResourceManager rm;
|
||||
private boolean fromActive = false;
|
||||
private StandByTransitionRunnable standByTransitionRunnable;
|
||||
private RMNMInfo rmnmInfo;
|
||||
|
||||
RMActiveServices(ResourceManager rm) {
|
||||
super("RMActiveServices");
|
||||
|
@ -806,7 +807,7 @@ public class ResourceManager extends CompositeService
|
|||
LOG.info("Initialized Federation membership.");
|
||||
}
|
||||
|
||||
new RMNMInfo(rmContext, scheduler);
|
||||
rmnmInfo = new RMNMInfo(rmContext, scheduler);
|
||||
|
||||
if (conf.getBoolean(YarnConfiguration.YARN_API_SERVICES_ENABLE,
|
||||
false)) {
|
||||
|
@ -875,6 +876,10 @@ public class ResourceManager extends CompositeService
|
|||
super.serviceStop();
|
||||
|
||||
DefaultMetricsSystem.shutdown();
|
||||
// unregister rmnmInfo bean
|
||||
if (rmnmInfo != null) {
|
||||
rmnmInfo.unregister();
|
||||
}
|
||||
if (rmContext != null) {
|
||||
RMStateStore store = rmContext.getStateStore();
|
||||
try {
|
||||
|
@ -1132,9 +1137,9 @@ public class ResourceManager extends CompositeService
|
|||
params.put("com.sun.jersey.config.property.packages", apiPackages);
|
||||
}
|
||||
|
||||
Builder<ApplicationMasterService> builder =
|
||||
Builder<ResourceManager> builder =
|
||||
WebApps
|
||||
.$for("cluster", ApplicationMasterService.class, masterService,
|
||||
.$for("cluster", ResourceManager.class, this,
|
||||
"ws")
|
||||
.with(conf)
|
||||
.withServlet("API-Service", "/app/*",
|
||||
|
|
Loading…
Reference in New Issue