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

Ismael Juma commented on KAFKA-4405:
------------------------------------

[~enothereska], do you mean the following?

{code}
                if (!records.isEmpty()) {
                    // before returning the fetched records, we can send off 
the next round of fetches
                    // and avoid block waiting for their responses to enable 
pipelining while the user
                    // is handling the fetched records.
                    //
                    // NOTE: since the consumed position has already been 
updated, we must not allow
                    // wakeups or any other errors to be triggered prior to 
returning the fetched records.
                   if (records.size() < fetcher.maxPollRecords) {
                       fetcher.sendFetches();
                       client.pollNoWakeup();
                   }

                    if (this.interceptors == null)
                        return new ConsumerRecords<>(records);
                    else
                        return this.interceptors.onConsume(new 
ConsumerRecords<>(records));
                }
{code}

> Kafka consumer improperly send prefetch request
> -----------------------------------------------
>
>                 Key: KAFKA-4405
>                 URL: https://issues.apache.org/jira/browse/KAFKA-4405
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.10.0.1
>            Reporter: ysysberserk
>
> Now kafka consumer has added max.poll.records to limit the count of messages 
> return by poll().
> According to KIP-41, to implement  max.poll.records, the prefetch request 
> should only be sent when the total number of retained records is less than 
> max.poll.records.
> But in the code of 0.10.0.1 , the consumer will send a prefetch request if it 
> retained any records and never check if total number of retained records is 
> less than max.poll.records..
> If max.poll.records is set to a count much less than the count of message 
> fetched , the poll() loop will send a lot of requests than expected and will 
> have more and more records fetched and stored in memory before they can be 
> consumed.
> So before sending a  prefetch request , the consumer must check if total 
> number of retained records is less than max.poll.records.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to