diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java b/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java index df93155c369..e0b28fef646 100644 --- a/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java +++ b/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java @@ -621,14 +621,14 @@ public boolean sendHeartbeatToBroker(long id, String brokerName, String addr) { */ public boolean sendHeartbeatToBroker(long id, String brokerName, String addr, boolean strictLockMode) { if (this.lockHeartbeat.tryLock()) { - final HeartbeatData heartbeatDataWithSub = this.prepareHeartbeatData(false); - final boolean producerEmpty = heartbeatDataWithSub.getProducerDataSet().isEmpty(); - final boolean consumerEmpty = heartbeatDataWithSub.getConsumerDataSet().isEmpty(); - if (producerEmpty && consumerEmpty) { - log.warn("sendHeartbeatToBroker sending heartbeat, but no consumer and no producer. [{}]", this.clientId); - return false; - } try { + final HeartbeatData heartbeatDataWithSub = this.prepareHeartbeatData(false); + final boolean producerEmpty = heartbeatDataWithSub.getProducerDataSet().isEmpty(); + final boolean consumerEmpty = heartbeatDataWithSub.getConsumerDataSet().isEmpty(); + if (producerEmpty && consumerEmpty) { + log.warn("sendHeartbeatToBroker sending heartbeat, but no consumer and no producer. [{}]", this.clientId); + return false; + } if (clientConfig.isUseHeartbeatV2()) { int currentHeartbeatFingerprint = heartbeatDataWithSub.computeHeartbeatFingerprint(); heartbeatDataWithSub.setHeartbeatFingerprint(currentHeartbeatFingerprint);