Greg Harris created KAFKA-16967:
-----------------------------------

             Summary: 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: Task
          Components: core
            Reporter: Greg Harris


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