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

Vladislav Pyatkov commented on IGNITE-17846:
--------------------------------------------

Merged 3cce42b9ca95179864484b306c4b646d3b2de1b4

> Direct configuration request leads to synchronously waiting on network
> ----------------------------------------------------------------------
>
>                 Key: IGNITE-17846
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17846
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> *Motivation*
> .NET suite periodical hang out. Log shows the suspicious trace frizzing on a 
> getting direct configuration value:
> {noformat}
> "org.apache.ignite.internal.runner.app.PlatformTestNodeRunner_2-srv-worker-3" 
> #102 prio=10 os_prio=0 cpu=1958.85ms elapsed=391.19s tid=0x00007fcb8c005800 
> nid=0x3f7b55 waiting on condition  [0x00007fcce43f2000]
>    java.lang.Thread.State: WAITING (parking)
>         at jdk.internal.misc.Unsafe.park(java.base@11.0.16.1/Native Method)
>         - parking to wait for  <0x000000071e057c88> (a 
> java.util.concurrent.CompletableFuture$Signaller)
>         at 
> java.util.concurrent.locks.LockSupport.park(java.base@11.0.16.1/LockSupport.java:194)
>         at 
> java.util.concurrent.CompletableFuture$Signaller.block(java.base@11.0.16.1/CompletableFuture.java:1796)
>         at 
> java.util.concurrent.ForkJoinPool.managedBlock(java.base@11.0.16.1/ForkJoinPool.java:3128)
>         at 
> java.util.concurrent.CompletableFuture.waitingGet(java.base@11.0.16.1/CompletableFuture.java:1823)
>         at 
> java.util.concurrent.CompletableFuture.get(java.base@11.0.16.1/CompletableFuture.java:1998)
>         at 
> org.apache.ignite.internal.configuration.ConfigurationChanger.get(ConfigurationChanger.java:627)
>         at 
> org.apache.ignite.internal.configuration.ConfigurationChanger.getLatest(ConfigurationChanger.java:328)
>         at 
> org.apache.ignite.internal.configuration.direct.DirectPropertyProxy.value(DirectPropertyProxy.java:65)
>         at 
> org.apache.ignite.internal.table.distributed.TableManager.directTableId(TableManager.java:1470)
>         at 
> org.apache.ignite.internal.table.distributed.TableManager.tableAsyncInternal(TableManager.java:1542)
>         at 
> org.apache.ignite.internal.table.distributed.TableManager.tableAsync(TableManager.java:1502)
>         at 
> org.apache.ignite.client.handler.requests.table.ClientTableGetRequest.process(ClientTableGetRequest.java:45)
>         at 
> org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:376)
>         at 
> org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:336)
>         at 
> org.apache.ignite.client.handler.ClientInboundMessageHandler.channelRead(ClientInboundMessageHandler.java:187)
>         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.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
>         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.lang.Thread.run(java.base@11.0.16.1/Thread.java:834)
> {noformat}
> The invocation does not progress, because it is going on network thread 
> (*2-srv-worker-3) and network response try to return to the same thread.
> *Definition of Done*
> While, the API does not allow getting the direct value asynchronously 
> (IGNITE-16288), we will use a standard Fork-Join pool to wait the value in 
> dedicate thread.
> All places where we will have used the standard pool require TODO comment 
> with the issue where it will be fixed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to