[
https://issues.apache.org/jira/browse/HBASE-14222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14697815#comment-14697815
]
stack commented on HBASE-14222:
-------------------------------
I can see how your changes improved the test but am less sure of the changes to
DrainBarrier. Can you manufacture the condition you are fixing at all in a unit
test to prove your refactor addresses it? Nice work [~ikeda]
> Improve DrainBarrier
> --------------------
>
> Key: HBASE-14222
> URL: https://issues.apache.org/jira/browse/HBASE-14222
> Project: HBase
> Issue Type: Bug
> Components: util
> Reporter: Hiroshi Ikeda
> Assignee: Hiroshi Ikeda
> Priority: Minor
> Attachments: HBASE-14222.patch
>
>
> 1. {{DrainBarrier.stopAndDrainOps}} may wait forever if
> {{DrainBarrier.endOp}} changes its state and calls {{Object.notifyAll}} just
> before {{stopAndDrainOps}} enters the synchronized block to call
> {{Object.wait}}. Moreover, {{Object.wait}} may wake up false-positively, and
> {{stopAndDrainOps}} may break the block before outstanding operations are
> complete.
> 2. Some tests for {{DrainBarrier}} catch and ignore {{AssertionError}}
> explicitly thrown JUnit's {{fail}} method.
> The implementation of {{DrainBarrier}} is a little complex, and I'll fix and
> refactor it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)