yugj opened a new issue #8172:
URL: https://github.com/apache/dubbo/issues/8172


   
   - [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) 
of this repository and believe that this is not a duplicate.
   - [ ] I have checked the 
[FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository 
and believe that this is not a duplicate.
   
   ### Environment
   
   * Dubbo version: 2.7.12
   * Operating System version: centos
   * Java version: 8
   
   ### Steps to reproduce this issue
   
   1. API网关(通过泛化调用http转dubbo),dubbo版本从2.7.7升级到2.7.12 处理issue 
#[7109](https://github.com/apache/dubbo/pull/7109) 
,#[6959](https://github.com/apache/dubbo/pull/6959)
   
   2. 配置了参数dubbo.consumer.threads=200
   
   3. dubbo provider 发布4节点,运行OK,但是删除旧的4个节点的时候,发现请求报错,完整报文见下文
   
      ```
      An exception '{}' [enable DEBUG level for full stacktrace] was thrown by 
a user handler's exceptionCaught() method while handling the following 
exception:
      org.apache.dubbo.remoting.ExecutionException: class 
org.apache.dubbo.remoting.transport.dispatcher.all.AllChannelHandler error when 
process received event .
      ```
   
   4. 回滚到了2.7.7版本 (目前仅在生产环境出现,测试环境 本地环境未出现)
   
   Pls. provide [GitHub address] to reproduce this issue.
   
   ### Actual Result
   
   What actually happens?
   
   报错代码AllChannelHandler.received
   
   ```java
   ExecutorService executor = getPreferredExecutorService(message);
   //这边executor获取到的对象和 DefaultExecutorRepository.getExecutor获取到的线程池相同
   ```
   
   在启动新节点,下线旧节点时候,API网关调用dubbo服务报如下错误,显示,使用到的线程池是一个**Terminated**状态
   
   我正在跟踪代码,同时想咨询下,在什么场景可能会导致这边线程池变成Terminated状态
   
   ```
   An exception '{}' [enable DEBUG level for full stacktrace] was thrown by a 
user handler's exceptionCaught() method while handling the following exception:
   org.apache.dubbo.remoting.ExecutionException: class 
org.apache.dubbo.remoting.transport.dispatcher.all.AllChannelHandler error when 
process received event .
        at 
org.apache.dubbo.remoting.transport.dispatcher.all.AllChannelHandler.received(AllChannelHandler.java:68)
        at 
org.apache.dubbo.remoting.exchange.support.header.HeartbeatHandler.received(HeartbeatHandler.java:90)
        at 
org.apache.dubbo.remoting.transport.MultiMessageHandler.received(MultiMessageHandler.java:52)
        at 
org.apache.dubbo.remoting.transport.AbstractPeer.received(AbstractPeer.java:147)
        at 
org.apache.dubbo.remoting.transport.netty4.NettyClientHandler.channelRead(NettyClientHandler.java:83)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at 
io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:648)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:583)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:500)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Thread.java:745)
   Caused by: java.util.concurrent.RejectedExecutionException: Task 
org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable@7d7d66e4 
rejected from java.util.concurrent.ThreadPoolExecutor@15527cbc[Terminated, pool 
size = 0, active threads = 0, queued tasks = 0, completed tasks = 93]
        at 
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
        at 
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
        at 
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
        at 
org.apache.dubbo.remoting.transport.dispatcher.all.AllChannelHandler.received(AllChannelHandler.java:62)
        ... 28 common frames omitted
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to