Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-8182

IllegalStateException in NetworkClient.initiateConnect when handling UnknownHostException thrown from ClusterConnectionStates.connecting

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 2.2.0, 2.1.1
    • None
    • network
    • None

    Description

      When NetworkUtils.initiateConnect calls connectionStates.connecting an UnknownHostException can be thrown by ClientUtils.resolve when creating a new NodeConnectionState .

      In the above case the nodeState map within ClusterConnectionStates will not contain an entry for the node ID.

      The catch clause within NetworkUtils.initiateConnect immediately calls connectionStates.disconnected but this makes the assumption that a NodeConnectionState entry exists for the node ID. This assumption is incorrect when an UnknownHostException is thrown as described above and leads to an IllegalStateException like the following:

      java.lang.IllegalStateException: No entry found for connection 2147483645|
        at org.apache.kafka.clients.ClusterConnectionStates.nodeState(ClusterConnectionStates.java:339)|
        at org.apache.kafka.clients.ClusterConnectionStates.disconnected(ClusterConnectionStates.java:143)|
        at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:926)|
         at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:287)|

      This is an issue when running in K8s since if a node is marked not ready then DNS resolution starts to fail when resolving the address of the broker on that node.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              manderson23@gmail.com Mark Anderson
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: