You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@rocketmq.apache.org by "dongeforever (JIRA)" <ji...@apache.org> on 2017/05/27 06:19:04 UTC

[jira] [Closed] (ROCKETMQ-160) SendHeartBeart log may not be triggered in the same expected period

     [ https://issues.apache.org/jira/browse/ROCKETMQ-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

dongeforever closed ROCKETMQ-160.
---------------------------------

> SendHeartBeart log may not be triggered in the same expected period
> -------------------------------------------------------------------
>
>                 Key: ROCKETMQ-160
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-160
>             Project: Apache RocketMQ
>          Issue Type: Improvement
>          Components: rocketmq-client
>            Reporter: Jaskey Lam
>            Assignee: Jaskey Lam
>            Priority: Minor
>             Fix For: 4.1.0-incubating
>
>
> {code}
>     private void sendHeartbeatToAllBroker() {
>         final HeartbeatData heartbeatData = this.prepareHeartbeatData();
>         final boolean producerEmpty = heartbeatData.getProducerDataSet().isEmpty();
>         final boolean consumerEmpty = heartbeatData.getConsumerDataSet().isEmpty();
>         if (producerEmpty && consumerEmpty) {
>             log.warn("sending heartbeat, but no consumer and no producer");
>             return;
>         }
>         long times = this.storeTimesTotal.getAndIncrement();//here every time when the method is call, the times will increase even though acatully no heartbeat is sent
>         Iterator<Entry<String, HashMap<Long, String>>> it = this.brokerAddrTable.entrySet().iterator();
>         while (it.hasNext()) {
>             Entry<String, HashMap<Long, String>> entry = it.next();
>             String brokerName = entry.getKey();
>             HashMap<Long, String> oneTable = entry.getValue();
>             if (oneTable != null) {
>                 for (Map.Entry<Long, String> entry1 : oneTable.entrySet()) {
>                     Long id = entry1.getKey();
>                     String addr = entry1.getValue();
>                     if (addr != null) {
>                         if (consumerEmpty) {
>                             if (id != MixAll.MASTER_ID)
>                                 continue;
>                         }
>                         try {
>                             this.mQClientAPIImpl.sendHearbeat(addr, heartbeatData, 3000);
>                             if (times % 20 == 0) {//since the first call is times !=1, the heart beat log for the first heart beat could be missed
>                                 log.info("send heart beat to broker[{} {} {}] success", brokerName, id, addr);
>                                 log.info(heartbeatData.toString());
>                             }
>                         } catch (Exception e) {
>                             if (this.isBrokerInNameServer(addr)) {
>                                 log.error("send heart beat to broker exception", e);
>                             } else {
>                                 log.info("send heart beat to broker[{} {} {}] exception, because the broker not up, forget it", brokerName,
>                                     id, addr);
>                             }
>                         }
>                     }
>                 }
>             }
>         }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)