[ 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)