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

Mikhail Petrov updated IGNITE-28340:
------------------------------------
    Description: 
Wee need to fix flaky IgniteClientConnectionEventListenerTest see 
https://ci2.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=-1820416766087188853&tab=testDetails
 for more details.

The main cause of test failures is the thin client's attempt to reestablish 
connection asynchronously after it was failed (see 
ReliableChannelImpl#initAllChannelsAsync method and its usages). This can lead 
to unexpected events. In case testConnectionLost an extra HandshakeFailEvent 
may be fired if thin client instance was closed during handshake caused by 
connection beeing reestablished.
testHandshakeFail can get multiple HandshakeFailEvent for the same reason.



Useful stacktraces that shows how unexpected events are generated 

testConnectionLost :

{code:java}
 at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.initAllChannelsAsync(ReliableChannelImpl.java:599)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.channelsInit(ReliableChannelImpl.java:807)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.onChannelFailure(ReliableChannelImpl.java:569)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:918)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:843)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:205)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:194)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelEx.service(ReliableChannelEx.java:113)
    at 
org.apache.ignite.internal.client.thin.TcpIgniteClient.cacheNames(TcpIgniteClient.java:261)
    at 
org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testFail(IgniteClientConnectionEventListenerTest.java:227)
    at 
org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testConnectionLost(IgniteClientConnectionEventListenerTest.java:187)
    at jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at 
org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2486)
    at java.base/java.lang.Thread.run(Thread.java:829)

{code}


{code:java}
class org.apache.ignite.client.events.HandshakeFailEvent: 
org.apache.ignite.client.ClientConnectionException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800] 
[remoteAddress=localhost/127.0.0.1:10800]
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:830)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:227)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1126)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:610)
    at 
java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
    at 
java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
    at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at 
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800]
    at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:744)
    ... 10 more
Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
closed [remoteAddress=localhost/127.0.0.1:10800]
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:301)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:278)
    at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
    at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
    at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
    at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
    at java.base/java.lang.Thread.run(Thread.java:829)
{code}

testHandshakeFail:


{code:java}
org.apache.ignite.client.ClientConnectionException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800] 
[remoteAddress=localhost/127.0.0.1:10800]
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:829)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:226)
at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1106)
at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:590)
at 
java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
at 
java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800]
at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:743)
        ... 10 more
Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
closed [remoteAddress=localhost/127.0.0.1:10800]
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:300)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:277)
at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
at java.base/java.lang.Thread.run(Thread.java:829)
{code}







  was:
Wee need to fix flaky IgniteClientConnectionEventListenerTest see 
https://ci2.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=-1820416766087188853&tab=testDetails
 for more details.

The main reason for test failures is the thin client's attempts to reestablish 
connection asynchronously after it was failed (see 
ReliableChannelImpl#initAllChannelsAsync method and its usages)


Useful stacktraces that shows how unexpected events are generated 

testConnectionLost :

{code:java}
 at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.initAllChannelsAsync(ReliableChannelImpl.java:599)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.channelsInit(ReliableChannelImpl.java:807)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.onChannelFailure(ReliableChannelImpl.java:569)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:918)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:843)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:205)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:194)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelEx.service(ReliableChannelEx.java:113)
    at 
org.apache.ignite.internal.client.thin.TcpIgniteClient.cacheNames(TcpIgniteClient.java:261)
    at 
org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testFail(IgniteClientConnectionEventListenerTest.java:227)
    at 
org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testConnectionLost(IgniteClientConnectionEventListenerTest.java:187)
    at jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at 
org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2486)
    at java.base/java.lang.Thread.run(Thread.java:829)

{code}


{code:java}
class org.apache.ignite.client.events.HandshakeFailEvent: 
org.apache.ignite.client.ClientConnectionException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800] 
[remoteAddress=localhost/127.0.0.1:10800]
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:830)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:227)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1126)
    at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:610)
    at 
java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
    at 
java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
    at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at 
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800]
    at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
    at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:744)
    ... 10 more
Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
closed [remoteAddress=localhost/127.0.0.1:10800]
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:301)
    at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:278)
    at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
    at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
    at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
    at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
    at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
    at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
    at java.base/java.lang.Thread.run(Thread.java:829)
{code}

testHandshakeFail:


{code:java}
org.apache.ignite.client.ClientConnectionException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800] 
[remoteAddress=localhost/127.0.0.1:10800]
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:829)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:226)
at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1106)
at 
org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:590)
at 
java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
at 
java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
[remoteAddress=localhost/127.0.0.1:10800]
at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:743)
        ... 10 more
Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
closed [remoteAddress=localhost/127.0.0.1:10800]
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:300)
at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:277)
at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
at java.base/java.lang.Thread.run(Thread.java:829)
{code}








> Fix flaky IgniteClientConnectionEventListenerTest
> -------------------------------------------------
>
>                 Key: IGNITE-28340
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28340
>             Project: Ignite
>          Issue Type: Test
>            Reporter: Mikhail Petrov
>            Assignee: Mikhail Petrov
>            Priority: Minor
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Wee need to fix flaky IgniteClientConnectionEventListenerTest see 
> https://ci2.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=-1820416766087188853&tab=testDetails
>  for more details.
> The main cause of test failures is the thin client's attempt to reestablish 
> connection asynchronously after it was failed (see 
> ReliableChannelImpl#initAllChannelsAsync method and its usages). This can 
> lead to unexpected events. In case testConnectionLost an extra 
> HandshakeFailEvent may be fired if thin client instance was closed during 
> handshake caused by connection beeing reestablished.
> testHandshakeFail can get multiple HandshakeFailEvent for the same reason.
> Useful stacktraces that shows how unexpected events are generated 
> testConnectionLost :
> {code:java}
>  at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.initAllChannelsAsync(ReliableChannelImpl.java:599)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.channelsInit(ReliableChannelImpl.java:807)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.onChannelFailure(ReliableChannelImpl.java:569)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:918)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.applyOnDefaultChannel(ReliableChannelImpl.java:843)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:205)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.service(ReliableChannelImpl.java:194)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelEx.service(ReliableChannelEx.java:113)
>     at 
> org.apache.ignite.internal.client.thin.TcpIgniteClient.cacheNames(TcpIgniteClient.java:261)
>     at 
> org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testFail(IgniteClientConnectionEventListenerTest.java:227)
>     at 
> org.apache.ignite.internal.client.thin.events.IgniteClientConnectionEventListenerTest.testConnectionLost(IgniteClientConnectionEventListenerTest.java:187)
>     at jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
>     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>     at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>     at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>     at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>     at 
> org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2486)
>     at java.base/java.lang.Thread.run(Thread.java:829)
> {code}
> {code:java}
> class org.apache.ignite.client.events.HandshakeFailEvent: 
> org.apache.ignite.client.ClientConnectionException: Channel is closed 
> [remoteAddress=localhost/127.0.0.1:10800] 
> [remoteAddress=localhost/127.0.0.1:10800]
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:830)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:227)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1126)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:610)
>     at 
> java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
>     at 
> java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
>     at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
>     at 
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
>     at 
> java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
>     at 
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
>     at 
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
> Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
> [remoteAddress=localhost/127.0.0.1:10800]
>     at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
>     at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
>     at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
>     at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:744)
>     ... 10 more
> Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
> closed [remoteAddress=localhost/127.0.0.1:10800]
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:301)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:278)
>     at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
>     at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
>     at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
>     at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
>     at 
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
>     at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
>     at 
> org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
>     at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
>     at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
>     at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
>     at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
>     at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
>     at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>     at java.base/java.lang.Thread.run(Thread.java:829)
> {code}
> testHandshakeFail:
> {code:java}
> org.apache.ignite.client.ClientConnectionException: Channel is closed 
> [remoteAddress=localhost/127.0.0.1:10800] 
> [remoteAddress=localhost/127.0.0.1:10800]
> at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:829)
> at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.<init>(TcpClientChannel.java:226)
> at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl$ClientChannelHolder.getOrCreateChannel(ReliableChannelImpl.java:1106)
> at 
> org.apache.ignite.internal.client.thin.ReliableChannelImpl.lambda$initAllChannelsAsync$7(ReliableChannelImpl.java:590)
> at 
> java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
> at 
> java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290)
> at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
> at 
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
> at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
> at 
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
> at 
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
> Caused by: class org.apache.ignite.IgniteCheckedException: Channel is closed 
> [remoteAddress=localhost/127.0.0.1:10800]
> at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:5038)
> at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
> at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
> at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
> at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.handshake(TcpClientChannel.java:743)
>       ... 10 more
> Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
> closed [remoteAddress=localhost/127.0.0.1:10800]
> at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:300)
> at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:277)
> at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
> at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
> at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:257)
> at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
> at 
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:72)
> at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:96)
> at 
> org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3747)
> at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:150)
> at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2925)
> at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2850)
> at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2362)
> at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1950)
> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
> at java.base/java.lang.Thread.run(Thread.java:829)
> {code}



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

Reply via email to