[
https://issues.apache.org/jira/browse/ROCKETMQ-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973927#comment-15973927
]
ASF GitHub Bot commented on ROCKETMQ-160:
-----------------------------------------
Github user Jaskey commented on the issue:
https://github.com/apache/incubator-rocketmq/pull/86
@shroman
For your first point, I would like to remain the existing flow? Because the
heart beat sent may be failed and if we only mark the success one, we maybe
miss the log for long turn when send heartbeat is failed for many times and
then become success. But anyway this is a minor issue , I will follow your
advice if you guys think it is better.
For your second point, I agree and I will proceed.
> 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)