YARN-1382. Remove unusableRMNodesConcurrentSet (never used) in NodeListManager to get rid of memory leak. Contributed by Rohith Sharma K S.

(cherry picked from commit 223ce323bb)
This commit is contained in:
Junping Du 2015-12-30 07:52:07 -08:00
parent 970bb2da15
commit 401d1e6e8a
2 changed files with 4 additions and 21 deletions

View File

@ -1147,6 +1147,9 @@ Release 2.8.0 - UNRELEASED
YARN-4400. AsyncDispatcher.waitForDrained should be final. (Daniel Templeton YARN-4400. AsyncDispatcher.waitForDrained should be final. (Daniel Templeton
via junping_du) via junping_du)
YARN-1382. Remove unusableRMNodesConcurrentSet (never used) in NodeListManager
to get rid of memory leak. (Rohith Sharma K S via junping_du)
Release 2.7.3 - UNRELEASED Release 2.7.3 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -19,8 +19,6 @@
package org.apache.hadoop.yarn.server.resourcemanager; package org.apache.hadoop.yarn.server.resourcemanager;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
@ -62,9 +60,6 @@ public class NodesListManager extends CompositeService implements
private HostsFileReader hostsReader; private HostsFileReader hostsReader;
private Configuration conf; private Configuration conf;
private Set<RMNode> unusableRMNodesConcurrentSet = Collections
.newSetFromMap(new ConcurrentHashMap<RMNode,Boolean>());
private final RMContext rmContext; private final RMContext rmContext;
private String includesFile; private String includesFile;
@ -290,24 +285,12 @@ public class NodesListManager extends CompositeService implements
} }
} }
/**
* Provides the currently unusable nodes. Copies it into provided collection.
* @param unUsableNodes
* Collection to which the unusable nodes are added
* @return number of unusable nodes added
*/
public int getUnusableNodes(Collection<RMNode> unUsableNodes) {
unUsableNodes.addAll(unusableRMNodesConcurrentSet);
return unusableRMNodesConcurrentSet.size();
}
@Override @Override
public void handle(NodesListManagerEvent event) { public void handle(NodesListManagerEvent event) {
RMNode eventNode = event.getNode(); RMNode eventNode = event.getNode();
switch (event.getType()) { switch (event.getType()) {
case NODE_UNUSABLE: case NODE_UNUSABLE:
LOG.debug(eventNode + " reported unusable"); LOG.debug(eventNode + " reported unusable");
unusableRMNodesConcurrentSet.add(eventNode);
for(RMApp app: rmContext.getRMApps().values()) { for(RMApp app: rmContext.getRMApps().values()) {
if (!app.isAppFinalStateStored()) { if (!app.isAppFinalStateStored()) {
this.rmContext this.rmContext
@ -320,10 +303,7 @@ public class NodesListManager extends CompositeService implements
} }
break; break;
case NODE_USABLE: case NODE_USABLE:
if (unusableRMNodesConcurrentSet.contains(eventNode)) { LOG.debug(eventNode + " reported usable");
LOG.debug(eventNode + " reported usable");
unusableRMNodesConcurrentSet.remove(eventNode);
}
for (RMApp app : rmContext.getRMApps().values()) { for (RMApp app : rmContext.getRMApps().values()) {
if (!app.isAppFinalStateStored()) { if (!app.isAppFinalStateStored()) {
this.rmContext this.rmContext