[Prev] Thread [Next]  |  [Prev] Date [Next]

[jira] [Commented] (DERBY-5608) BaseTestCase.readProcessOutput should read getInputStream() and getErrorStream() in separate threads Kristian Waagan (Commented) (JIRA) Wed Feb 22 05:01:00 2012


Kristian Waagan commented on DERBY-5608:

Ok, I'll look into backporting it.

Do you mean DERBY-5594?
I don't think this will fix that issue, although I'm not sure. I'm also not 
sure if there is a bug with SpawnedProcess/StreamSaver To me it looks like the 
process is forcibly destroyed for some reason, and it would be good to 
understand why that's happening.
> 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:
>            Reporter: Kathey Marsden
>            Assignee: Kristian Waagan
>            Priority: Minor
>             Fix For:
>         Attachments: derby-5608-1a-use_spawnedprocess.diff, 
> derby-5608-2a-clear_interrupt_flag_on_waitFor.diff
> 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: 
For more information on JIRA, see: http://www.atlassian.com/software/jira