Skip to content

Commit fe609c8

Browse files
committed
Fix process.waitFor() problem when subprocess out buffer is overflowed.
1 parent aba5f4c commit fe609c8

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>ru.kgn.typescript</groupId>
55
<artifactId>typescript-maven-plugin</artifactId>
66
<packaging>maven-plugin</packaging>
7-
<version>0.3</version>
7+
<version>0.4</version>
88
<name>typescript-maven-plugin Maven Mojo</name>
99
<url>https://github.com/gnkoshelev/typescript-maven-plugin</url>
1010

src/main/java/ru/kgn/typescript/tsc/TypeScriptCompiler.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package ru.kgn.typescript.tsc;
22

3+
import org.apache.maven.plugin.logging.Log;
4+
35
import java.io.BufferedReader;
46
import java.io.File;
5-
import java.io.FileReader;
6-
//import java.io.IOException;
77
import java.io.IOException;
88
import java.io.InputStreamReader;
99
import java.util.ArrayList;
1010
import java.util.Arrays;
1111
import java.util.List;
12-
import org.apache.maven.plugin.logging.Log;
12+
13+
//import java.io.IOException;
1314

1415
/**
1516
*
@@ -44,20 +45,17 @@ public void compile(List<String> arguments) throws TypeScriptCompilationExceptio
4445
ProcessBuilder processBuilder = new ProcessBuilder(commands);
4546
processBuilder.redirectErrorStream(true);
4647
processBuilder.directory(workingDirectory);
48+
49+
BufferedReader reader = null;
4750
try {
4851
Process process = processBuilder.start();
49-
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
52+
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
53+
String line;
54+
while ((line = reader.readLine()) != null) {
55+
log.info(line);
56+
}
5057
process.waitFor();
5158
int resultCode = process.exitValue();
52-
sb = new StringBuilder();
53-
String line = reader.readLine();
54-
while (line != null) {
55-
sb.append(line);
56-
sb.append('\n');
57-
line = reader.readLine();
58-
}
59-
reader.close();
60-
log.info(sb.toString());
6159

6260
if (resultCode != 0) {
6361
//TODO: Error has been acquired
@@ -73,6 +71,14 @@ public void compile(List<String> arguments) throws TypeScriptCompilationExceptio
7371
TypeScriptCompilationException exception = new TypeScriptCompilationException(ex);
7472
exception.setResultCode(-1);
7573
throw exception;
74+
} finally {
75+
if (reader != null) {
76+
try {
77+
reader.close();
78+
} catch (IOException e) {
79+
log.warn("Failed to close input stream of subprocess", e);
80+
}
81+
}
7682
}
7783
}
7884
}

0 commit comments

Comments
 (0)