From ed433a3c930b2106a65d45c5bf292c3b52fdc266 Mon Sep 17 00:00:00 2001 From: duheng <39583243+duhengforever@users.noreply.github.com> Date: Tue, 17 Jul 2018 15:49:17 +0800 Subject: [PATCH] Fix the get connection bug when sending transactional message (#368) --- .../org/apache/rocketmq/broker/client/ProducerManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java index 28d103c0..61ceae53 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java @@ -209,10 +209,13 @@ public class ProducerManager { Channel channel = channelList.get(index); int count = 0; boolean isOk = channel.isActive() && channel.isWritable(); - while (isOk && count++ < GET_AVALIABLE_CHANNEL_RETRY_COUNT) { + while (count++ < GET_AVALIABLE_CHANNEL_RETRY_COUNT) { + if (isOk) { + return channel; + } index = (++index) % size; channel = channelList.get(index); - return channel; + isOk = channel.isActive() && channel.isWritable(); } } else { log.warn("Check transaction failed, channel table is empty. groupId={}", groupId); -- GitLab