[
https://issues.apache.org/jira/browse/METRON-2036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16792160#comment-16792160
]
Michael Miklavcic commented on METRON-2036:
-------------------------------------------
It appears that JUnit may have an issue with thread re-use. If/when it sends an
interrupt signal to a running thread, the interrupt status is not reset. This
is not a problem for 99.99% of our tests cases currently, afaict.
HdfsWriterTest is an anomaly in the sense that it's the only test that uses
Files.readLines(...). Under the hood, this method for reading files checks
Thread interrupt status and will throw the exception seen in this defect
description above. It appears that this has been corrected in a beta tagged
version of JUnit4. Given the limited scope of this issue, I'm going to inject
my own interrupt flag reset on this test with notes describing the problem.
Expect to see this problem fixed when JUnit 4.13 is released - we can upgrade
at the point, unless anyone feels very strongly that we should update to the
beta version now.
The committed fix can be seen referenced here:
[https://github.com/junit-team/junit4/blob/r4.13-beta-2/src/main/java/org/junit/runners/ParentRunner.java#L217]
See the linked github PR's for additional context and info from the JUnit team.
> Maven builds fail locally in HDFSWriterTest
> -------------------------------------------
>
> Key: METRON-2036
> URL: https://issues.apache.org/jira/browse/METRON-2036
> Project: Metron
> Issue Type: Bug
> Reporter: Michael Miklavcic
> Assignee: Michael Miklavcic
> Priority: Major
> Attachments: METRON-2036-ide-fail.txt
>
>
> I'm getting the following when running mvn clean install from master locally.
> {code:java}
> testSingleFileIfNoStreamClosed(org.apache.metron.writer.hdfs.HdfsWriterTest)
> Time elapsed: 0.087 sec <<< ERROR!
> java.nio.channels.ClosedByInterruptException
> at
> java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
> at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:164)
> at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
> at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109)
> at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
> at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
> at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
> at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
> at java.io.InputStreamReader.read(InputStreamReader.java:184)
> at java.io.BufferedReader.fill(BufferedReader.java:161)
> at java.io.BufferedReader.readLine(BufferedReader.java:324)
> at java.io.BufferedReader.readLine(BufferedReader.java:389)
> at java.nio.file.Files.readAllLines(Files.java:3205)
> at java.nio.file.Files.readAllLines(Files.java:3242)
> at
> org.apache.metron.writer.hdfs.HdfsWriterTest.testSingleFileIfNoStreamClosed(HdfsWriterTest.java:444)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
> at
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
> at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
> at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
> ...
> Results :
> Tests in error:
> HdfsWriterTest.testSingleFileIfNoStreamClosed:444 » ClosedByInterrupt
> HdfsWriterTest.testWriteMultipleFiles:356 » ClosedByInterrupt
> HdfsWriterTest.testWriteNoOutputFunction:271 » ClosedByInterrupt
> HdfsWriterTest.testWriteSingleFile:314 » ClosedByInterrupt
> HdfsWriterTest.testWriteSingleFileWithNull:407 » ClosedByInterrupt
> Tests run: 55, Failures: 0, Errors: 5, Skipped: 0
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Metron ............................................. SUCCESS [ 8.093 s]
> [INFO] metron-stellar ..................................... SUCCESS [ 0.241 s]
> [INFO] stellar-common ..................................... SUCCESS [ 45.716
> s]
> [INFO] metron-analytics ................................... SUCCESS [ 0.166 s]
> [INFO] metron-maas-common ................................. SUCCESS [ 8.222 s]
> [INFO] metron-platform .................................... SUCCESS [ 0.322 s]
> [INFO] metron-zookeeper ................................... SUCCESS [ 0.452 s]
> [INFO] metron-test-utilities .............................. SUCCESS [ 0.865 s]
> [INFO] metron-integration-test ............................ SUCCESS [ 7.036 s]
> [INFO] metron-maas-service ................................ SUCCESS [ 59.894
> s]
> [INFO] metron-common ...................................... SUCCESS [01:08
> min]
> [INFO] metron-statistics .................................. SUCCESS [ 29.024
> s]
> [INFO] metron-writer ...................................... FAILURE [ 5.537 s]
> {code}
> *Note* - I've also attached log output of tests running and failing in my IDE.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)