You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@rocketmq.apache.org by "Jaskey Lam (JIRA)" <ji...@apache.org> on 2017/04/01 07:36:41 UTC
[jira] [Updated] (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 ]
Jaskey Lam updated ROCKETMQ-160:
--------------------------------
Description:
{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}
> 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
>
> {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)