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

bboyleonp commented on KAFKA-16701:
-----------------------------------

Hi [~gharris1727],
This issue seems to occur when the UTs are executed simultaneously by the 
following command
{code:java}
./gradlew :core:unitTest --tests "kafka.network.SocketServerTest" {code}
and they will pass when executed separately under JDK 17 if I do

 
{code:java}
./gradlew :core:unitTest --tests 
"kafka.network.SocketServerTest.closingChannelSendFailure" {code}
 


I found that the UT execution before `closingChannelSendFailure` is 
`processDisconnectedException` for both JDK 11 and 17. However, the execution 
of `processDisconnectedException` will finish execution under JDK 11, then do 
the `closingChannelSendFailure`, which in JDK 17 is not that case. After 
starting `processDisconnectedException` under JDK 17, 
`closingChannelSendFailure` will start its execution in the middle of 
`processDisconnectedException` and causes the following error that is not seen 
under JDK 11.
{code:java}
[2024-07-25 19:33:24,435] ERROR Exception while processing disconnection of 
notAValidConnectionId 
(kafka.network.SocketServerTest$TestableProcessor:76)java.lang.IllegalStateException:
 connectionId has unexpected format: notAValidConnectionId       at 
kafka.network.Processor.$anonfun$processDisconnected$3(SocketServer.scala:1218) 
     at scala.Option.getOrElse(Option.scala:201)     at 
kafka.network.Processor.$anonfun$processDisconnected$1(SocketServer.scala:1218) 
     at java.base/java.util.HashMap$KeySet.forEach(HashMap.java:1008)        at 
kafka.network.Processor.processDisconnected(SocketServer.scala:1214) at 
kafka.network.Processor.run(SocketServer.scala:1017) at 
java.base/java.lang.Thread.run(Thread.java:840) {code}
It seems there's a race condition between these unit tests. I am a little 
confused now. Aren't the unit tests supposed to be executed separately? Did I 
miss something?

> Some SocketServerTest buffered close tests flaky failing locally
> ----------------------------------------------------------------
>
>                 Key: KAFKA-16701
>                 URL: https://issues.apache.org/jira/browse/KAFKA-16701
>             Project: Kafka
>          Issue Type: Test
>          Components: core, unit tests
>    Affects Versions: 3.5.0, 3.6.0, 3.7.0
>            Reporter: Greg Harris
>            Assignee: bboyleonp
>            Priority: Major
>              Labels: flaky-test
>
> These tests are failing for me on a local development environment, but don't 
> appear to be flaky or failing in CI. They only appear to fail for JDK >= 17. 
> I'm using an M1 Mac, so it is possible that either the Mac's linear port 
> allocation, or a native implementation is impacting this.
> closingChannelSendFailure()
>  
> {noformat}
> java.lang.AssertionError: receiveRequest timed out
>       at 
> kafka.network.SocketServerTest.receiveRequest(SocketServerTest.scala:148)
>       at 
> kafka.network.SocketServerTest.makeChannelWithBufferedRequestsAndCloseRemote(SocketServerTest.scala:690)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifySendFailureAfterRemoteClose$1(SocketServerTest.scala:1434)
>       at 
> kafka.network.SocketServerTest.verifySendFailureAfterRemoteClose(SocketServerTest.scala:1430)
>       at 
> kafka.network.SocketServerTest.closingChannelSendFailure(SocketServerTest.scala:1425){noformat}
> closingChannelWithBufferedReceivesFailedSend()
>  
> {noformat}
> java.lang.AssertionError: receiveRequest timed out
>       at 
> kafka.network.SocketServerTest.receiveRequest(SocketServerTest.scala:148)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$6(SocketServerTest.scala:1591)
>       at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$1(SocketServerTest.scala:1590)
>       at 
> kafka.network.SocketServerTest.verifyRemoteCloseWithBufferedReceives(SocketServerTest.scala:1553)
>       at 
> kafka.network.SocketServerTest.closingChannelWithBufferedReceivesFailedSend(SocketServerTest.scala:1520){noformat}
> closingChannelWithCompleteAndIncompleteBufferedReceives()
> {noformat}
> java.lang.AssertionError: receiveRequest timed out
>       at 
> kafka.network.SocketServerTest.receiveRequest(SocketServerTest.scala:148)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$6(SocketServerTest.scala:1591)
>       at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$1(SocketServerTest.scala:1590)
>       at 
> kafka.network.SocketServerTest.verifyRemoteCloseWithBufferedReceives(SocketServerTest.scala:1553)
>       at 
> kafka.network.SocketServerTest.closingChannelWithCompleteAndIncompleteBufferedReceives(SocketServerTest.scala:1511)
>  {noformat}
> remoteCloseWithBufferedReceives()
> {noformat}
> java.lang.AssertionError: receiveRequest timed out
>       at 
> kafka.network.SocketServerTest.receiveRequest(SocketServerTest.scala:148)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$6(SocketServerTest.scala:1591)
>       at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190)
>       at 
> kafka.network.SocketServerTest.$anonfun$verifyRemoteCloseWithBufferedReceives$1(SocketServerTest.scala:1590)
>       at 
> kafka.network.SocketServerTest.verifyRemoteCloseWithBufferedReceives(SocketServerTest.scala:1553)
>       at 
> kafka.network.SocketServerTest.remoteCloseWithBufferedReceives(SocketServerTest.scala:1453){noformat}



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

Reply via email to