BaseTestCase.readProcessOutput should read getInputStream() and
getErrorStream() in separate threads
-----------------------------------------------------------------------------------------------------
Key: DERBY-5608
URL: https://issues.apache.org/jira/browse/DERBY-5608
Project: Derby
Issue Type: Bug
Components: Test
Affects Versions: 10.9.0.0
Reporter: Kathey Marsden
Priority: Minor
BaseTestCase.readProcessOutput() reads the streams from
Process.getInputStream() and Process.getErrorStream() sequentially
InputStream is = pr.getInputStream();
InputStream es = pr.getErrorStream();
...
output += "<STDOUT> " + inputStreamToString(is) + "<END STDOUT>\n";
output += "<STDERR>" + inputStreamToString(es) + "<END STDERR>\n";
I think that to be really correct the two streams need to be read in separate
threads because if the error output is large it could block and cause a hang
if they are read sequentially like this.
I noticed during the DERBY-5601 discussion as Myrna referenced in that the
addition of draining the error stream caused a different problem (an
InterruptException). I don't understand how it could cause that problem but do
think a hang blocking on reading the input would be possible if the error
output was large enough both before and after the change to add the reading of
the error stream sequentially.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira