You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Keith Turner (JIRA)" <ji...@apache.org> on 2014/02/24 22:59:21 UTC

[jira] [Commented] (ACCUMULO-2400) race condition in ExamplesIT

    [ https://issues.apache.org/jira/browse/ACCUMULO-2400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13910872#comment-13910872 ] 

Keith Turner commented on ACCUMULO-2400:
----------------------------------------

I was thinking for debugging purposes it would be nice if the process output was written to a file.  In the case where a test fails because the output was not as expected, it would be nice to know what the output was.    I was was looking for something like tee and found  {{org.apache.commons.io.input.TeeInputStream}}  Maybe a version of the MAC.exec function could be created that returns teed inputstreams 

> race condition in ExamplesIT
> ----------------------------
>
>                 Key: ACCUMULO-2400
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-2400
>             Project: Accumulo
>          Issue Type: Bug
>         Environment: 6395840418046d8b3a923a4bfb3e4ba486c5dcd0
>            Reporter: Keith Turner
>             Fix For: 1.6.0
>
>
> Saw ExamplesIT fail with the following exception.  Looking at the code I think there is a race condition.  The test calls the MAC.exec() function to create a process and then reads from stdout of the process.  The MAC exec function starts a background thread to read from stdout.  If this background thread reads stdout before the test I think it will fail in the following way.  Probably need to fix everywhere MAC exec is used in this way.  Could either read from the file MAC creates or pass an option to MAC.exec() to not start the background thread.
> {noformat}
> java.io.IOException: Stream closed
> 	at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162)
> 	at java.io.BufferedInputStream.read(BufferedInputStream.java:325)
> 	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
> 	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
> 	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
> 	at java.io.InputStreamReader.read(InputStreamReader.java:184)
> 	at java.io.BufferedReader.fill(BufferedReader.java:154)
> 	at java.io.BufferedReader.readLine(BufferedReader.java:317)
> 	at java.io.BufferedReader.readLine(BufferedReader.java:382)
> 	at org.apache.accumulo.test.functional.ExamplesIT.testClasspath(ExamplesIT.java:172)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 	at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)