[ https://issues.apache.org/jira/browse/YARN-1284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13789861#comment-13789861 ]
Sandy Ryza commented on YARN-1284: ---------------------------------- A few nits. Otherwise LGTM. {code} + //package private for testing purposes + private long deleteCgroupTimeout; + Clock clock; {code} Comment should go before the second variable. Also there should be a space after the "//". {code} + //visible for testing {code} Should the VisibleForTesting annotation be used? This is in two places. {code} + LOG.debug("deleteCgroup: " + cgroupPath); {code} Should be surrounded by if (LOG.isDebugEnabled()) {code} + //file exists {code} Space after "//"? > LCE: Race condition leaves dangling cgroups entries for killed containers > ------------------------------------------------------------------------- > > Key: YARN-1284 > URL: https://issues.apache.org/jira/browse/YARN-1284 > Project: Hadoop YARN > Issue Type: Bug > Components: nodemanager > Affects Versions: 2.2.0 > Reporter: Alejandro Abdelnur > Assignee: Alejandro Abdelnur > Priority: Blocker > Attachments: YARN-1284.patch, YARN-1284.patch, YARN-1284.patch > > > When LCE & cgroups are enabled, when a container is is killed (in this case > by its owning AM, an MRAM) it seems to be a race condition at OS level when > doing a SIGTERM/SIGKILL and when the OS does all necessary cleanup. > LCE code, after sending the SIGTERM/SIGKILL and getting the exitcode, > immediately attempts to clean up the cgroups entry for the container. But > this is failing with an error like: > {code} > 2013-10-07 15:21:24,359 WARN > org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Exit code > from container container_1381179532433_0016_01_000011 is : 143 > 2013-10-07 15:21:24,359 DEBUG > org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container: > Processing container_1381179532433_0016_01_000011 of type > UPDATE_DIAGNOSTICS_MSG > 2013-10-07 15:21:24,359 DEBUG > org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler: > deleteCgroup: > /run/cgroups/cpu/hadoop-yarn/container_1381179532433_0016_01_000011 > 2013-10-07 15:21:24,359 WARN > org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler: > Unable to delete cgroup at: > /run/cgroups/cpu/hadoop-yarn/container_1381179532433_0016_01_000011 > {code} > CgroupsLCEResourcesHandler.clearLimits() has logic to wait for 500 ms for AM > containers to avoid this problem. it seems this should be done for all > containers. > Still, waiting for extra 500ms seems too expensive. > We should look at a way of doing this in a more 'efficient way' from time > perspective, may be spinning while the deleteCgroup() cannot be done with a > minimal sleep and a timeout. -- This message was sent by Atlassian JIRA (v6.1#6144)