[
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)