AllocateResponse allocateResponse = amrmClient.allocate(progress);
List<ProcessLauncher<YarnContainerInfo>> launchers
= Lists.newArrayListWithCapacity(allocateResponse.getAllocatedContainers().size());
for (Container container : allocateResponse.getAllocatedContainers()) {
launchers.add(new RunnableProcessLauncher(new Hadoop21YarnContainerInfo(container), nmClient));
}
if (!launchers.isEmpty()) {
handler.acquired(launchers);
// If no process has been launched through the given launcher, return the container.
for (ProcessLauncher<YarnContainerInfo> l : launchers) {
// This cast always works.
RunnableProcessLauncher launcher = (RunnableProcessLauncher) l;
if (!launcher.isLaunched()) {
Container container = launcher.getContainerInfo().getContainer();
LOG.info("Nothing to run in container, releasing it: {}", container);
amrmClient.releaseAssignedContainer(container.getId());
}
}
}