On Mon, 24 Apr 2023 20:57:31 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> ProcessTools.startProcess() creates process and read it's output error 
>> streams. So the any other using of corresponding Process.getInputStream() 
>> and Process.getErrorStream() doesn't get process streams.
>> 
>> This fix preserve process streams content and allow to read reuse the date. 
>> The ByteArrayOutputStream is used as a buffer. 
>> It stores all process output, never trying to clean date which has been 
>> read. 
>> 
>> The regression test has been provided with issue.
>> 
>> I closed previous PR https://github.com/openjdk/jdk/pull/13560 by mistake 
>> instead of updating it.
>> 
>> I run all tests to ensure that no failures are introduced.
>
> test/lib/jdk/test/lib/process/ProcessTools.java line 249:
> 
>> 247:         stdout.addOutputStream(out.getOutputStream());
>> 248:         stderr.addOutputStream(err.getOutputStream());
>> 249: 
> 
> Overall this looks good, although I'm a bit unclear on how some of the 
> underpinnings work, allowing the output to appear in these output streams, 
> and also in the LineForwarder output (above), and for that matter, in the 
> lineConsumer output (below). I guess there is some multiplexing of the output 
> that I just don't grasp, but appears to be something that already worked.

StreamPumper read process stdout, stderr streams and write read data to 
registered streams. So it works as multiplexer.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13594#discussion_r1175930914

Reply via email to