commit ddb19790ef7d6f3ec9ab191dec39b30e178573e9 Author: Jian He Date: Fri Mar 11 10:51:05 2016 -0800 nm client diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/NMClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/NMClientImpl.java index e047368..26d2edd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/NMClientImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/NMClientImpl.java @@ -182,7 +182,8 @@ private void addStartingContainer(StartedContainer startedContainer) // Do synchronization on StartedContainer to prevent race condition // between startContainer and stopContainer only when startContainer is // in progress for a given container. - StartedContainer startingContainer = createStartedContainer(container); + StartedContainer startingContainer = + new StartedContainer(container.getId(), container.getNodeId()); synchronized (startingContainer) { addStartingContainer(startingContainer); @@ -210,18 +211,14 @@ private void addStartingContainer(StartedContainer startedContainer) } allServiceResponse = response.getAllServicesMetaData(); startingContainer.state = ContainerState.RUNNING; - } catch (YarnException e) { + } catch (YarnException | IOException e) { startingContainer.state = ContainerState.COMPLETE; // Remove the started container if it failed to start - removeStartedContainer(startingContainer); - throw e; - } catch (IOException e) { - startingContainer.state = ContainerState.COMPLETE; - removeStartedContainer(startingContainer); + startedContainers.remove(startingContainer.containerId); throw e; } catch (Throwable t) { startingContainer.state = ContainerState.COMPLETE; - removeStartedContainer(startingContainer); + startedContainers.remove(startingContainer.containerId); throw RPCUtil.getRemoteException(t); } finally { if (proxy != null) { @@ -263,7 +260,7 @@ public void increaseContainerResource(Container container) @Override public void stopContainer(ContainerId containerId, NodeId nodeId) throws YarnException, IOException { - StartedContainer startedContainer = getStartedContainer(containerId); + StartedContainer startedContainer = startedContainers.get(containerId); // Only allow one request of stopping the container to move forward // When entering the block, check whether the precursor has already stopped @@ -276,7 +273,7 @@ public void stopContainer(ContainerId containerId, NodeId nodeId) stopContainerInternal(containerId, nodeId); // Only after successful startedContainer.state = ContainerState.COMPLETE; - removeStartedContainer(startedContainer); + startedContainers.remove(startedContainer.containerId); } } else { stopContainerInternal(containerId, nodeId); @@ -333,23 +330,6 @@ private void stopContainerInternal(ContainerId containerId, NodeId nodeId) } } } - - protected synchronized StartedContainer createStartedContainer( - Container container) throws YarnException, IOException { - StartedContainer startedContainer = new StartedContainer(container.getId(), - container.getNodeId()); - return startedContainer; - } - - protected synchronized void - removeStartedContainer(StartedContainer container) { - startedContainers.remove(container.containerId); - } - - protected synchronized StartedContainer getStartedContainer( - ContainerId containerId) { - return startedContainers.get(containerId); - } public AtomicBoolean getCleanupRunningContainers() { return cleanupRunningContainers;