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

Nick Dimiduk commented on HBASE-23664:
--------------------------------------

I believe I understand why this is broken. It's happening only on branch-1 
because that branch is using {{@Test(timeout=...)}} instead of 
{{HBaseClassTestRule}} to manage timeouts. One of the fixes in JUnit 4.13 is 
[ThreadGroup instance leaked when using Timeout 
rule|https://github.com/junit-team/junit4/pull/1517]. I agree with [~Jeongdae 
Kim] in that I suspect this is the culprit.

What happens is this. The test spins up a miniCluster in {{@BeforeClass}}. The 
first test method that actually tries to write any data to the test cluster is 
one using this timeout annotation. The client's thread pool is lazily created 
at the time of the first puts, and thus it grab the current thread's 
ThreadGroup, the one managed by the first timeout-annotated test method, which 
is named "FailOnTimeoutGroup". After that method completes, per 
junit-team/junit#1517, it terminates the ThreadGroup. The client instance 
survives, but its ThreadGroup has been terminated. Thus the test failures.

> Upgrade JUnit to 4.13
> ---------------------
>
>                 Key: HBASE-23664
>                 URL: https://issues.apache.org/jira/browse/HBASE-23664
>             Project: HBase
>          Issue Type: Task
>          Components: integration tests, test
>            Reporter: Nick Dimiduk
>            Assignee: Nick Dimiduk
>            Priority: Minor
>             Fix For: 3.0.0, 2.3.0
>
>
> New JUnit released a week ago. Let's give it a spin.
> https://github.com/junit-team/junit4/blob/master/doc/ReleaseNotes4.13.md



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to