[
https://issues.apache.org/jira/browse/HBASE-8539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13659038#comment-13659038
]
Jeffrey Zhong commented on HBASE-8539:
--------------------------------------
{quote}
Would a better approach be to just not add the listeners again?
{quote}
The addendum patch is using the above approach. If re-initialization code tries
to add a new listener, we'll replace the old one of the same class otherwise
just leave old listener instances there.
The reason we have to replace old listener instances is that we re-create these
listener instances such as AM , SplitLogManager etc during master recovery.
> Double(or tripple ...) ZooKeeper listeners of the same type when Master
> recovers from ZK SessionExpiredException
> ----------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-8539
> URL: https://issues.apache.org/jira/browse/HBASE-8539
> Project: HBase
> Issue Type: Bug
> Components: master
> Affects Versions: 0.98.0, 0.94.7, 0.95.0
> Reporter: Jeffrey Zhong
> Assignee: Jeffrey Zhong
> Fix For: 0.98.0, 0.94.8, 0.95.1
>
> Attachments: double-registered listeners.png,
> hbase-8539-0.94-addendum.patch, hbase-8539-0.94.patch,
> hbase-8539-addendum.patch, hbase-8539.patch, hbase-8539.patch
>
>
> When Master tries to recover from zookeeper session expired exceptions, we
> don't clean old registered listener instances. Therefore, it may end up we
> have two(or more) listeners to double handling same events. Attached a screen
> shot from debugger to show the issue.
> I considered to limit one listener per class while I think that would limit
> the listener usage so I choose to clear exiting listeners during recovery for
> the fix.
> (This issue is unrelated to the issue HBASE-8365 because I verified there is
> no dup-listeners when HBASE-8365 happened)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira