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

Sijie Guo commented on BOOKKEEPER-407:
--------------------------------------

the reason why I don't use Collections.synchronizedSet is that I added a 
double-checking when add to topic set. so add and iteration needs to write the 
synchronized() blocks, to keep them consistent I added for remove too. If you 
think Collections.synchronizedSet is better, I could change it.

{code}
+        synchronized (topicsForHost) {
+            // check whether the ownership changed, since it might happened
+            // after replace succeed
+            if (host.equals(topic2Host.get(topic))) {
+                topicsForHost.add(topic);
             }
-            topicsForHost.add(pubSubData.topic);
         }
{code}
                
> Hedwig client doesn't remove old topic2Host mapping in case of redirect
> -----------------------------------------------------------------------
>
>                 Key: BOOKKEEPER-407
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-407
>             Project: Bookkeeper
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Aniruddha
>             Fix For: 4.2.0
>
>         Attachments: BK-407.patch, BOOKKEEPER-407.diff
>
>
> In the storeTopic2HostMapping function, there is a topic2Host.putIfAbsent(). 
> This doesn't seem correct as we should always update the mapping in case of a 
> redirect. 
> Reviewboard : https://reviews.apache.org/r/7139/

--
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