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)