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