[
https://issues.apache.org/jira/browse/KAFKA-6877?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rajini Sivaram resolved KAFKA-6877.
-----------------------------------
Resolution: Fixed
Reviewer: Jiangjie Qin
> Remove completedFetch upon a failed parse if it contains no records.
> --------------------------------------------------------------------
>
> Key: KAFKA-6877
> URL: https://issues.apache.org/jira/browse/KAFKA-6877
> Project: Kafka
> Issue Type: Bug
> Components: clients, consumer
> Affects Versions: 1.0.0, 0.11.0.2, 1.1.0, 1.0.1
> Reporter: Adem Efe Gencer
> Assignee: Adem Efe Gencer
> Priority: Major
> Fix For: 2.0.0
>
>
> This patch removed a completedFetch from the completedFetches queue upon a
> failed parse if it contains no records. The following scenario explains why
> this is needed for an instance of this case – i.e. in
> TopicAuthorizationException.
> 0. Let's assume a scenario, in which the consumer is attempting to read from
> a topic without the necessary read permission.
> 1. In Fetcher#fetchedRecords(), after peeking the completedFetches, the
> Fetcher#parseCompletedFetch(CompletedFetch) throws a
> TopicAuthorizationException (as expected).
> 2. Fetcher#fetchedRecords() passes the TopicAuthorizationException up without
> having a chance to poll completedFetches. So, the same completedFetch remains
> at the completedFetches queue.
> 3. Upon following calls to Fetcher#fetchedRecords(), peeking the
> completedFetches will always return the same completedFetch independent of
> any updates to the ACL that the topic is trying to read from.
> 4. Hence, despite the creation of an ACL with correct permissions, once the
> consumer sees the TopicAuthorizationException, it will be unable to recover
> without a bounce.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)