[
https://issues.apache.org/jira/browse/HBASE-15292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15276150#comment-15276150
]
Hiroshi Ikeda commented on HBASE-15292:
---------------------------------------
FYI It is already fixed by this patch but I just noticed that, it was more
dangerous than what I thought. ZooKeeperWatcher sets many fields (which are
effectively final) while constructing, and the variables had possibility not to
be seen to other threads when the reference to the RecoverableZooKeeper
instance is seen without synchronization.
> Refined ZooKeeperWatcher to prevent ZooKeeper's callback while construction
> ---------------------------------------------------------------------------
>
> Key: HBASE-15292
> URL: https://issues.apache.org/jira/browse/HBASE-15292
> Project: HBase
> Issue Type: Bug
> Components: Zookeeper
> Reporter: Hiroshi Ikeda
> Assignee: Hiroshi Ikeda
> Priority: Minor
> Fix For: 2.0.0, 1.3.0, 1.4.0
>
> Attachments: HBASE-15292-V2.patch, HBASE-15292-V3.patch,
> HBASE-15292-V4.patch, HBASE-15292-V5.patch, HBASE-15292.patch
>
>
> The existing code is not just messy but also contains a subtle bug of
> visibility due to missing synchronization between threads.
> The root of the evil is that ZooKeeper uses a silly anti-pattern, starting a
> thread within its constructor, and in practice all the developers are not
> allowed to use ZooKeeper correctly without tedious code.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)