diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java index 03b88a44997..e9d8b6a0655 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java @@ -573,15 +573,7 @@ private int handleLaunchForLaunchType(ContainerStartContext ctx, return handleExitCode(e, container, containerId); } finally { resourcesHandler.postExecute(containerId); - - try { - if (resourceHandlerChain != null) { - resourceHandlerChain.postComplete(containerId); - } - } catch (ResourceHandlerException e) { - LOG.warn("ResourceHandlerChain.postComplete failed for " + - "containerId: " + containerId + ". Exception: " + e); - } + postComplete(containerId); } return 0; @@ -721,14 +713,7 @@ public int reacquireContainer(ContainerReacquisitionContext ctx) return super.reacquireContainer(ctx); } finally { resourcesHandler.postExecute(containerId); - if (resourceHandlerChain != null) { - try { - resourceHandlerChain.postComplete(containerId); - } catch (ResourceHandlerException e) { - LOG.warn("ResourceHandlerChain.postComplete failed for " + - "containerId: " + containerId + " Exception: " + e); - } - } + postComplete(containerId); } } @@ -798,6 +783,8 @@ public boolean reapContainer(ContainerReapContext ctx) throws IOException { logOutput(e.getOutput()); throw new IOException("Error in reaping container " + container.getContainerId().toString() + " exit = " + retCode, e); + } finally { + postComplete(container.getContainerId()); } return true; } @@ -968,4 +955,16 @@ public void removeDockerContainer(String containerId) { LOG.warn("Unable to remove docker container: " + containerId); } } + + private void postComplete(final ContainerId containerId) { + try { + if (resourceHandlerChain != null) { + LOG.debug("{} post complete", containerId); + resourceHandlerChain.postComplete(containerId); + } + } catch (ResourceHandlerException e) { + LOG.warn("ResourceHandlerChain.postComplete failed for " + + "containerId: {}. Exception: ", containerId, e); + } + } }