[ 
https://issues.apache.org/jira/browse/IGNITE-28459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Petrov updated IGNITE-28459:
------------------------------------
    Description: 
Steps that lead to mentioned problem:

1. The thin client establishes a connection to the server.
2. The server accepts the connection and enqueues the socket channel 
registration in the selector (see 
GridNioServer.AbstractNioClientWorker#offer(), 
GridNioServer.NioOperation#CONNECT, GridNioServer.NioOperation#REGISTER)
3. The server stops the NIO server, which results in:
a) stopping queue processing;
b) closing only those socket channels that were registered in the selector (see 
GridNioServer.AbstractNioClientWorker#bodyInternal, last block);
4. The thin client's socket channel remains in the queue, unclosed and 
unprocessed

This can be a major problem for cases when
1. server node stops but Java process keeps running.
2. thin client default handshake timeout is not set
This causes the thin client to hang indefinitely

The problem can be locally reproduced by applying attached patch and running 
org.apache.ignite.client.ReliabilityTest#testServiceProxyFailover test.

  was:
Steps that lead to mentioned problem:

1. The thin client establishes a connection to the server.
2. The server accepts the connection and enqueues the socket channel 
registration in the selector (see 
GridNioServer.AbstractNioClientWorker#offer(), 
GridNioServer.NioOperation#CONNECT, GridNioServer.NioOperation#REGISTER)
3. The server stops the NIO server, which results in:
a) stopping queue processing;
b) closing only those socket channels that were registered in the selector (see 
GridNioServer.AbstractNioClientWorker#bodyInternal, last block);
4. The thin client's socket channel remains in the queue, unclosed and 
unprocessed

This is ca be a major problem for cases when node stops but Java process keeps 
running.

The problem can be locally reproduced by applying attached patch and running 
org.apache.ignite.client.ReliabilityTest#testServiceProxyFailover test.


> Ignite NIO server may not close client socket channels if connection was 
> accepted while node is stopping
> --------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-28459
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28459
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Mikhail Petrov
>            Priority: Major
>              Labels: ise
>             Fix For: 2.19
>
>         Attachments: reproducer.patch
>
>
> Steps that lead to mentioned problem:
> 1. The thin client establishes a connection to the server.
> 2. The server accepts the connection and enqueues the socket channel 
> registration in the selector (see 
> GridNioServer.AbstractNioClientWorker#offer(), 
> GridNioServer.NioOperation#CONNECT, GridNioServer.NioOperation#REGISTER)
> 3. The server stops the NIO server, which results in:
> a) stopping queue processing;
> b) closing only those socket channels that were registered in the selector 
> (see GridNioServer.AbstractNioClientWorker#bodyInternal, last block);
> 4. The thin client's socket channel remains in the queue, unclosed and 
> unprocessed
> This can be a major problem for cases when
> 1. server node stops but Java process keeps running.
> 2. thin client default handshake timeout is not set
> This causes the thin client to hang indefinitely
> The problem can be locally reproduced by applying attached patch and running 
> org.apache.ignite.client.ReliabilityTest#testServiceProxyFailover test.



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

Reply via email to