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

Ted Yu commented on HBASE-8539:
-------------------------------

Looking at ArrayList source code, Arrays.copyOf() is used internally.
So getListeners() doesn't have to change.
                
> 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: 8539-addendum-v2.patch, double-registered listeners.png, 
> hbase-8539-0.94-addendum-03.patch, hbase-8539-0.94.patch, 
> hbase-8539-addendum-03.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

Reply via email to