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

ASF GitHub Bot commented on ROCKETMQ-243:
-----------------------------------------

Github user shroman commented on a diff in the pull request:

    https://github.com/apache/incubator-rocketmq/pull/130#discussion_r126858457
  
    --- Diff: 
common/src/main/java/org/apache/rocketmq/common/protocol/route/BrokerData.java 
---
    @@ -37,15 +41,21 @@ public BrokerData(String cluster, String brokerName, 
HashMap<Long, String> broke
             this.brokerAddrs = brokerAddrs;
         }
     
    +    /**
    +     * Selects a (preferably master) broker address from the registered 
list.
    +     * If the master's address cannot be found, a slave broker address is 
selected in a random manner.
    +     *
    +     * @return Broker address.
    +     */
         public String selectBrokerAddr() {
    -        String value = this.brokerAddrs.get(MixAll.MASTER_ID);
    -        if (null == value) {
    -            for (Map.Entry<Long, String> entry : 
this.brokerAddrs.entrySet()) {
    -                return entry.getValue();
    -            }
    +        String addr = this.brokerAddrs.get(MixAll.MASTER_ID);
    +
    +        if (addr == null) {
    +            List<Long> keys = new ArrayList<Long>(brokerAddrs.keySet());
    +            return brokerAddrs.get(keys.get(random.nextInt(keys.size())));
    --- End diff --
    
    what exactly is the problem with the current approach?


> BrokerData#selectBrokerAddr() picks the 1st element in the list of addresses
> ----------------------------------------------------------------------------
>
>                 Key: ROCKETMQ-243
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-243
>             Project: Apache RocketMQ
>          Issue Type: Improvement
>          Components: rocketmq-commons
>    Affects Versions: 4.1.0-incubating
>            Reporter: Roman Shtykh
>            Assignee: Roman Shtykh
>            Priority: Minor
>
> I wonder if this can cause broker contention. Therefore I propose to pick the 
> address at least in a random manner.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to