From 0e7060a1d57cf80bcd07ddc5b238cbfd3149be75 Mon Sep 17 00:00:00 2001 From: Sunil G Date: Thu, 31 Jan 2019 09:25:29 +0530 Subject: [PATCH] YARN-9099. GpuResourceAllocator#getReleasingGpus calculates number of GPUs in a wrong way. Contributed by Szilard Nemeth. (cherry picked from commit 71c49fa60faad2504b0411979a6e46e595b97a85) --- .../linux/resources/gpu/GpuResourceAllocator.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/gpu/GpuResourceAllocator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/gpu/GpuResourceAllocator.java index 81a965522ce..49aac6dc2ad 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/gpu/GpuResourceAllocator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/gpu/GpuResourceAllocator.java @@ -258,10 +258,7 @@ public class GpuResourceAllocator { private synchronized long getReleasingGpus() { long releasingGpus = 0; - Iterator> iter = usedDevices.entrySet() - .iterator(); - while (iter.hasNext()) { - ContainerId containerId = iter.next().getValue(); + for (ContainerId containerId : ImmutableSet.copyOf(usedDevices.values())) { Container container; if ((container = nmContext.getContainers().get(containerId)) != null) { if (container.isContainerInFinalStates()) {