Skip to content

Commit a6c5604

Browse files
authored
[ISSUE #10046] Fix lock leak risk in sendHeartbeatToBroker (#10047)
1 parent 0471136 commit a6c5604

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -621,14 +621,14 @@ public boolean sendHeartbeatToBroker(long id, String brokerName, String addr) {
621621
*/
622622
public boolean sendHeartbeatToBroker(long id, String brokerName, String addr, boolean strictLockMode) {
623623
if (this.lockHeartbeat.tryLock()) {
624-
final HeartbeatData heartbeatDataWithSub = this.prepareHeartbeatData(false);
625-
final boolean producerEmpty = heartbeatDataWithSub.getProducerDataSet().isEmpty();
626-
final boolean consumerEmpty = heartbeatDataWithSub.getConsumerDataSet().isEmpty();
627-
if (producerEmpty && consumerEmpty) {
628-
log.warn("sendHeartbeatToBroker sending heartbeat, but no consumer and no producer. [{}]", this.clientId);
629-
return false;
630-
}
631624
try {
625+
final HeartbeatData heartbeatDataWithSub = this.prepareHeartbeatData(false);
626+
final boolean producerEmpty = heartbeatDataWithSub.getProducerDataSet().isEmpty();
627+
final boolean consumerEmpty = heartbeatDataWithSub.getConsumerDataSet().isEmpty();
628+
if (producerEmpty && consumerEmpty) {
629+
log.warn("sendHeartbeatToBroker sending heartbeat, but no consumer and no producer. [{}]", this.clientId);
630+
return false;
631+
}
632632
if (clientConfig.isUseHeartbeatV2()) {
633633
int currentHeartbeatFingerprint = heartbeatDataWithSub.computeHeartbeatFingerprint();
634634
heartbeatDataWithSub.setHeartbeatFingerprint(currentHeartbeatFingerprint);

0 commit comments

Comments
 (0)