YARN-10976. Fix resource leak due to Files.walk (#3552)

Signed-off-by: Akira Ajisaka <aajisaka@apache.org>
(cherry picked from commit ae95caa60e)
This commit is contained in:
lujiefsi 2021-10-18 14:24:15 +08:00 committed by Akira Ajisaka
parent 5b1cf17f88
commit 4024afec28
No known key found for this signature in database
GPG Key ID: C1EDBB9CA400FD50

View File

@ -27,6 +27,7 @@
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.hadoop.util.Shell; import org.apache.hadoop.util.Shell;
@ -58,11 +59,11 @@ class VEDeviceDiscoverer {
public Set<Device> getDevicesFromPath(String path) throws IOException { public Set<Device> getDevicesFromPath(String path) throws IOException {
MutableInt counter = new MutableInt(0); MutableInt counter = new MutableInt(0);
try (Stream<Path> stream = Files.walk(Paths.get(path), 1)) {
return Files.walk(Paths.get(path), 1) return stream.filter(p -> p.toFile().getName().startsWith("veslot"))
.filter(p -> p.toFile().getName().startsWith("veslot")) .map(p -> toDevice(p, counter))
.map(p -> toDevice(p, counter)) .collect(Collectors.toSet());
.collect(Collectors.toSet()); }
} }
private Device toDevice(Path p, MutableInt counter) { private Device toDevice(Path p, MutableInt counter) {
@ -140,4 +141,4 @@ void setCommandExecutorProvider(
Function<String[], CommandExecutor> provider) { Function<String[], CommandExecutor> provider) {
this.commandExecutorProvider = provider; this.commandExecutorProvider = provider;
} }
} }