[ 
https://issues.apache.org/jira/browse/IGNITE-16699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17508136#comment-17508136
 ] 

Roman Puchkovskiy commented on IGNITE-16699:
--------------------------------------------

The patch looks good to me, thanks for the contribution

> Properly stop executors for network's user object serialization threads
> -----------------------------------------------------------------------
>
>                 Key: IGNITE-16699
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16699
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Mirza Aliev
>            Assignee: Semyon Danilov
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha5
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> We've noticed new warnings in some test's logs after IGNITE-16393 has been 
> merged:
> {noformat}
> 2022-03-16 00:04:03:667 +0300 
> [WARNING][ItTxDistributedTestThreeNodesThreeReplicas_null_20002-srv-worker-1][DefaultChannelPipeline]
>  An exceptionCaught() event was fired, and it reached at the tail of the 
> pipeline. It usually means the last handler in the pipeline did not handle 
> the exception.
> java.util.concurrent.RejectedExecutionException: Task 
> java.util.concurrent.FutureTask@18f18e0d[Not completed, task = 
> java.util.concurrent.Executors$RunnableAdapter@26616290[Wrapped task = 
> org.apache.ignite.network.DefaultMessagingService$$Lambda$1393/0x00000008005c4040@17c4f02c]]
>  rejected from java.util.concurrent.ThreadPoolExecutor@8867362[Terminated, 
> pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 3053]
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
>       at 
> java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
>       at 
> java.base/java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:714)
>       at 
> org.apache.ignite.network.DefaultMessagingService.onMessage(DefaultMessagingService.java:284)
>       at 
> org.apache.ignite.internal.network.netty.ConnectionManager.lambda$onMessage$2(ConnectionManager.java:202)
>       at 
> java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807)
>       at 
> org.apache.ignite.internal.network.netty.ConnectionManager.onMessage(ConnectionManager.java:202)
>       at 
> org.apache.ignite.internal.network.netty.MessageHandler.channelRead(MessageHandler.java:57)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
>       at 
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
>       at 
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
>       at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
>       at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
>       at 
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
>       at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
>       at 
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
>       at 
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>       at 
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>       at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}
>  
> Seems that there are some problems when we stop {{inboundService}} and 
> {{outboundService}} in 
> {{org.apache.ignite.network.DefaultMessagingService#stop}}.
> Probably we should wait for the executors to be stopped using 
> {{IgniteUtils#shutdownAndAwaitTermination}} 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to