You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/09/23 08:54:45 UTC

[rocketmq] branch develop updated: [ISSUE #5095] [Remoting-D] Not handle more request when channel write ability changed to un-writeable (#5176)

This is an automated email from the ASF dual-hosted git repository.

lizhanhui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new e7850f63e [ISSUE #5095] [Remoting-D] Not handle more request when channel write ability changed to un-writeable (#5176)
e7850f63e is described below

commit e7850f63e58d9879997785572e26b55866272bfb
Author: lizhimins <70...@qq.com>
AuthorDate: Fri Sep 23 16:54:38 2022 +0800

    [ISSUE #5095] [Remoting-D] Not handle more request when channel write ability changed to un-writeable (#5176)
    
    Co-authored-by: 斜阳 <te...@alibaba-inc.com>
---
 .../rocketmq/remoting/netty/NettyRemotingServer.java    | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
index a80434545..5af8c7621 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
@@ -515,6 +515,23 @@ public class NettyRemotingServer extends NettyRemotingAbstract implements Remoti
             // The related remoting server has been shutdown, so close the connected channel
             RemotingUtil.closeChannel(ctx.channel());
         }
+
+        @Override
+        public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception {
+            Channel channel = ctx.channel();
+            if (channel.isWritable()) {
+                if (!channel.config().isAutoRead()) {
+                    channel.config().setAutoRead(true);
+                    log.info("Channel[{}] turns writable, bytes to buffer before changing channel to un-writable: {}",
+                        RemotingHelper.parseChannelRemoteAddr(channel), channel.bytesBeforeUnwritable());
+                }
+            } else {
+                channel.config().setAutoRead(false);
+                log.warn("Channel[{}] auto-read is disabled, bytes to drain before it turns writable: {}",
+                    RemotingHelper.parseChannelRemoteAddr(channel), channel.bytesBeforeWritable());
+            }
+            super.channelWritabilityChanged(ctx);
+        }
     }
 
     @ChannelHandler.Sharable