Fix stream leak (#555)

This commit is contained in:
lujiefsi
2022-01-03 01:32:09 -06:00
committed by GitHub
parent 09cb99fd48
commit 827c09c51a
2 changed files with 12 additions and 10 deletions

View File

@@ -20,6 +20,7 @@ import java.io.IOException;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.file.DirectoryStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
@@ -307,7 +308,7 @@ public class DaemonConnector {
final Path mvndHome = parameters.mvndHome(); final Path mvndHome = parameters.mvndHome();
final Path workingDir = parameters.userDir(); final Path workingDir = parameters.userDir();
String command = ""; String command = "";
try { try (DirectoryStream<Path> jarPaths = Files.newDirectoryStream(mvndHome.resolve("mvn/lib/ext"))) {
List<String> args = new ArrayList<>(); List<String> args = new ArrayList<>();
// executable // executable
final String java = Os.current().isUnixLike() ? "bin/java" : "bin\\java.exe"; final String java = Os.current().isUnixLike() ? "bin/java" : "bin\\java.exe";
@@ -315,7 +316,7 @@ public class DaemonConnector {
// classpath // classpath
String mvndCommonPath = null; String mvndCommonPath = null;
String mvndAgentPath = null; String mvndAgentPath = null;
for (Path jar : Files.newDirectoryStream(mvndHome.resolve("mvn/lib/ext"))) { for (Path jar : jarPaths) {
String s = jar.getFileName().toString(); String s = jar.getFileName().toString();
if (s.endsWith(".jar")) { if (s.endsWith(".jar")) {
if (s.startsWith("mvnd-common-")) { if (s.startsWith("mvnd-common-")) {
@@ -349,11 +350,12 @@ public class DaemonConnector {
} }
// .mvn/jvm.config // .mvn/jvm.config
if (Files.isRegularFile(parameters.jvmConfigPath())) { if (Files.isRegularFile(parameters.jvmConfigPath())) {
Files.lines(parameters.jvmConfigPath()) try (Stream<String> lines = Files.lines(parameters.jvmConfigPath())) {
.flatMap(l -> Stream.of(l.split(" "))) lines.flatMap(l -> Stream.of(l.split(" ")))
.map(String::trim) .map(String::trim)
.filter(StringUtils::isNotEmpty) .filter(StringUtils::isNotEmpty)
.forEach(args::add); .forEach(args::add);
}
} }
// memory // memory
String minHeapSize = parameters.minHeapSize(); String minHeapSize = parameters.minHeapSize();

View File

@@ -33,6 +33,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import org.fusesource.jansi.Ansi; import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.internal.CLibrary; import org.fusesource.jansi.internal.CLibrary;
import org.jline.utils.AttributedString; import org.jline.utils.AttributedString;
@@ -332,9 +333,8 @@ public class DefaultClient implements Client {
List<Path> deleted = new ArrayList<>(); List<Path> deleted = new ArrayList<>();
List<Throwable> exceptions = new ArrayList<>(); List<Throwable> exceptions = new ArrayList<>();
FileTime limit = FileTime.from(Instant.now().minus(purgeLogPeriod)); FileTime limit = FileTime.from(Instant.now().minus(purgeLogPeriod));
try { try (Stream<Path> storagePath = Files.list(storage)) {
Files.list(storage) storagePath.filter(p -> p.getFileName().toString().endsWith(LOG_EXTENSION))
.filter(p -> p.getFileName().toString().endsWith(LOG_EXTENSION))
.filter(p -> !log.equals(p)) .filter(p -> !log.equals(p))
.filter(p -> { .filter(p -> {
try { try {