From 0b0f8ec946e58b2e032328b0f06960962afcca03 Mon Sep 17 00:00:00 2001 From: qianye <37405937+qianye1001@users.noreply.github.com> Date: Thu, 5 Sep 2024 14:16:43 +0800 Subject: [PATCH] [ISSUE #8599] Fix send fail without retry when get GO_AWAY twice (#8603) --- .../org/apache/rocketmq/client/producer/DefaultMQProducer.java | 3 ++- .../apache/rocketmq/client/producer/DefaultMQProducerTest.java | 2 +- .../apache/rocketmq/remoting/netty/NettyRemotingAbstract.java | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java b/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java index 3ecd5987c35..b47c01f6764 100644 --- a/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java +++ b/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java @@ -79,7 +79,8 @@ public class DefaultMQProducer extends ClientConfig implements MQProducer { ResponseCode.SYSTEM_BUSY, ResponseCode.NO_PERMISSION, ResponseCode.NO_BUYER_ID, - ResponseCode.NOT_IN_CURRENT_UNIT + ResponseCode.NOT_IN_CURRENT_UNIT, + ResponseCode.GO_AWAY )); /** diff --git a/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java index 96086c7a255..be277f69bcf 100644 --- a/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java +++ b/client/src/test/java/org/apache/rocketmq/client/producer/DefaultMQProducerTest.java @@ -769,7 +769,7 @@ public void assertTotalBatchMaxBytes() throws NoSuchFieldException, IllegalAcces @Test public void assertGetRetryResponseCodes() { assertNotNull(producer.getRetryResponseCodes()); - assertEquals(7, producer.getRetryResponseCodes().size()); + assertEquals(8, producer.getRetryResponseCodes().size()); } @Test diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java index 6f61e75e01a..9f3136195b3 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java @@ -278,6 +278,7 @@ public void processRequestCommand(final ChannelHandlerContext ctx, final Remotin "please go away"); response.setOpaque(opaque); writeResponse(ctx.channel(), cmd, response); + log.info("proxy is shutting down, write response GO_AWAY. channel={}, requestCode={}, opaque={}", ctx.channel(), cmd.getCode(), opaque); return; } }