Tommy Becker created KAFKA-5044:
-----------------------------------
Summary: max.in.flight.requests.per.connection > 1 is ineffective
Key: KAFKA-5044
URL: https://issues.apache.org/jira/browse/KAFKA-5044
Project: Kafka
Issue Type: Bug
Components: clients
Reporter: Tommy Becker
While looking at the NetworkClient code, I became suspicious about the
implementation of org.apache.kafka.clients.InFlightRequests#canSendMore, which
seems responsible for enforcing max.in.flight.requests.per.connection
{code}
public boolean canSendMore(String node) {
Deque<NetworkClient.InFlightRequest> queue = requests.get(node);
return queue == null || queue.isEmpty() ||
(queue.peekFirst().send.completed() && queue.size() <
this.maxInFlightRequestsPerConnection);
}
{code}
If the most recent request has not been completed, then this returns false even
if we are under the maxInFlightRequestsPerConnection limit. I wonder if I am
misunderstanding how this parameter is supposed to work, as this code has been
there quite some time. But I wrote a unit test that tries to send a second
request with one outstanding and it does indeed fail, despite
maxInFlightRequestsPerConnection being set to Integer.MAX_VALUE. I'll create a
PR with my test and possible fix.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)