From cbd86dbe8a3cb9aca6b37717f5698739968d799f Mon Sep 17 00:00:00 2001 From: lujie Date: Thu, 14 Oct 2021 13:22:11 +0800 Subject: [PATCH 1/2] YARN-10976 : fix resource leak due to Files.walk --- .../resourceplugin/com/nec/VEDeviceDiscoverer.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 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/resourceplugin/com/nec/VEDeviceDiscoverer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java index ca85bce1d2f3bf..3538edc2e0fdb4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java @@ -27,6 +27,7 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.commons.lang3.mutable.MutableInt; import org.apache.hadoop.util.Shell; @@ -58,11 +59,11 @@ class VEDeviceDiscoverer { public Set getDevicesFromPath(String path) throws IOException { MutableInt counter = new MutableInt(0); - - return Files.walk(Paths.get(path), 1) - .filter(p -> p.toFile().getName().startsWith("veslot")) - .map(p -> toDevice(p, counter)) - .collect(Collectors.toSet()); + try (Stream stream = Files.walk(Paths.get(path), 1)) { + return stream.filter(p -> p.toFile().getName().startsWith("veslot")) + .map(p -> toDevice(p, counter)) + .collect(Collectors.toSet()); + } } private Device toDevice(Path p, MutableInt counter) { @@ -140,4 +141,4 @@ void setCommandExecutorProvider( Function provider) { this.commandExecutorProvider = provider; } -} \ No newline at end of file +} From a81b57b2412ebc1b20a72b800467c329f792c796 Mon Sep 17 00:00:00 2001 From: lujie Date: Fri, 15 Oct 2021 16:32:24 +0800 Subject: [PATCH 2/2] fix format --- .../resourceplugin/com/nec/VEDeviceDiscoverer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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/resourceplugin/com/nec/VEDeviceDiscoverer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java index 3538edc2e0fdb4..b578d9ac53c028 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/com/nec/VEDeviceDiscoverer.java @@ -60,7 +60,7 @@ class VEDeviceDiscoverer { public Set getDevicesFromPath(String path) throws IOException { MutableInt counter = new MutableInt(0); try (Stream stream = Files.walk(Paths.get(path), 1)) { - return stream.filter(p -> p.toFile().getName().startsWith("veslot")) + return stream.filter(p -> p.toFile().getName().startsWith("veslot")) .map(p -> toDevice(p, counter)) .collect(Collectors.toSet()); }