[
https://issues.apache.org/jira/browse/HBASE-14222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14703976#comment-14703976
]
Ted Yu commented on HBASE-14222:
--------------------------------
Patch v2 lgtm.
> 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-V2.patch, 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)