Keith Wall created KAFKA-14908: ---------------------------------- Summary: Sporadic "Address already in use" when starting kafka cluster embedded within tests Key: KAFKA-14908 URL: https://issues.apache.org/jira/browse/KAFKA-14908 Project: Kafka Issue Type: Bug Reporter: Keith Wall
We have an integration test suite that starts/stops a kafka cluster before/after each test. Kafka is being started programmatically within the same JVM that is running the tests. Sometimes we get sporadic failures from with Kafka as it tries to bind the server socket. {code:java} org.apache.kafka.common.KafkaException: Socket server failed to bind to 0.0.0.0:9092: Address already in use. at kafka.network.Acceptor.openServerSocket(SocketServer.scala:684) at kafka.network.Acceptor.<init>(SocketServer.scala:576) at kafka.network.DataPlaneAcceptor.<init>(SocketServer.scala:433) at kafka.network.SocketServer.createDataPlaneAcceptor(SocketServer.scala:247) at kafka.network.SocketServer.createDataPlaneAcceptorAndProcessors(SocketServer.scala:226) at kafka.network.SocketServer.$anonfun$new$31(SocketServer.scala:173) at kafka.network.SocketServer.$anonfun$new$31$adapted(SocketServer.scala:173) at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:575) at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:573) at scala.collection.AbstractIterable.foreach(Iterable.scala:933) at kafka.network.SocketServer.<init>(SocketServer.scala:173) at kafka.server.KafkaServer.startup(KafkaServer.scala:331) {code} Investigation has shown that the socket is in the timed_wait state from a previous test. I know Kafka supports ephemeral ports, but this isn't convenient to our use-case. I'd like to suggest that Kafka is changed to set the SO_REUSEADDR on the server socket. I believe this is standard practice for server applications that run on well known ports . I don't believe this change would introduce a backward compatibility concerns. I will open a PR so that can be considered. Thank you. -- This message was sent by Atlassian Jira (v8.20.10#820010)