You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@rocketmq.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2017/06/06 03:39:18 UTC

[jira] [Commented] (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:comment-tabpanel&focusedCommentId=16038063#comment-16038063 ] 

ASF subversion and git services commented on ROCKETMQ-160:
----------------------------------------------------------

Commit 1f4b893ce70c615daa0c8fce948cef776c108d92 in incubator-rocketmq's branch refs/heads/master from [~Jaskey]
[ https://git-wip-us.apache.org/repos/asf?p=incubator-rocketmq.git;h=1f4b893 ]

[ROCKETMQ-160]SendHeartBeat may not be logged in the expected period closes apache/incubator-rocketmq#86


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