Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. The new config will be a common client config. The NetworkClient will keep the config socket.connections.setup.timeout.ms as a new property.
  2. NetworkClient.poll() will iterate all connecting nodes and disconnect those connections take more than connection.setup.timeout to finish using the exact approach as it handles “request.timeout.ms”. That is to say, the response will be constructed upon a RetriableException. Producer, Consumer, and AdminClient can then perform their retry logic as a request timeout happens.
  3. The node providing criteria C in the leastLoadedNode() will also change accordingly. Now the criteria should look like below:
    1. Provide the connected node with least number of inflight requests
    2. If no connected node exists, provide the connecting node with the largest index in the cached list of nodes.
    3. If no connected or connecting node exists, provide the disconnected node which respects the reconnect backoff with the least number of failed attempts. Consider the case when we have multiple DISCONNECTED nodes and the time interval between the two provide() invokes is greater than reconnect.backoff.ms. The Provider can provide the same nodes all the time. Thus, the provider should provide the nodes with the least failed attempts among all nodes passing the canConnect() check.

...