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

Chia-Ping Tsai resolved KAFKA-16967.
------------------------------------
    Fix Version/s: 3.9.0
       Resolution: Fixed

> NioEchoServer fails to register connection and causes flaky failure
> -------------------------------------------------------------------
>
>                 Key: KAFKA-16967
>                 URL: https://issues.apache.org/jira/browse/KAFKA-16967
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>            Reporter: Greg Harris
>            Assignee: TengYao Chi
>            Priority: Minor
>              Labels: flaky-test, newbie
>             Fix For: 3.9.0
>
>
> The NioEchoServer calls Selector#register for new connections. This call can 
> throw exceptions, which then kill the NioEchoServer. This has been observed 
> in the SslTransportLayerTest testUngracefulRemoteCloseDuringHandshake* 
> methods.
> {noformat}
> Exception in thread "echoserver" java.lang.IllegalStateException: There is 
> already a connection for id 127.0.0.1:40007-127.0.0.1:43710
>       at 
> org.apache.kafka.common.network.Selector.ensureNotRegistered(Selector.java:322)
>       at org.apache.kafka.common.network.Selector.register(Selector.java:310)
>       at 
> org.apache.kafka.common.network.NioEchoServer.run(NioEchoServer.java:229){noformat}
> This causes the test to fail with essentially a timeout, when the connection 
> is expired for becoming idle unexpectedly:
> {noformat}
> org.opentest4j.AssertionFailedError: Unexpected channel state EXPIRED ==> 
> expected: <true> but was: <false>
>     at 
> org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
>     at 
> org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
>     at org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
>     at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
>     at org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:214)
>     at 
> org.apache.kafka.common.network.SslTransportLayerTest.testIOExceptionsDuringHandshake(SslTransportLayerTest.java:898)
>     at 
> org.apache.kafka.common.network.SslTransportLayerTest.testUngracefulRemoteCloseDuringHandshakeRead(SslTransportLayerTest.java:837){noformat}
> Instead, the NioEchoServer should handle exceptions from register in a 
> similar fashion to the SocketServer.



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

Reply via email to