[ https://issues.apache.org/jira/browse/KAFKA-18164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Schofield resolved KAFKA-18164. -------------------------------------- Resolution: Fixed > Empty in memory acknowledgements when a shareAcknowledge request fails > ---------------------------------------------------------------------- > > Key: KAFKA-18164 > URL: https://issues.apache.org/jira/browse/KAFKA-18164 > Project: Kafka > Issue Type: Sub-task > Reporter: Chirag Wadhwa > Assignee: Shivsundar R > Priority: Major > Fix For: 4.0.0 > > > When there are 2 share acknowledge requests to be sent to acknowledge all the > records fetched by the latest fetch and the first request was unsuccessful > because of broker shutdown, this sends back an error response to the > ShareConsumeRequestManager with a DisconnectException. This results in > closing of the shareSession on the client side. So, the next request that > will be build would have a shareSessionEpoch as 0. While this was going on, > the next shareAcknowledge request was in the process of building with the > remaining acknowledgements. But, this request cannot be successfully built, > because the shareSessionEpoch cannot be 0 for a shareAcknowledge request. > Thus {{sessionHandler.newShareAcknowledgeBuilder(groupId, fetchConfig)}} > returns a null in the {{buildRequest}} method inside > ShareConsumeRequestManager. Also, since the in memory map of acknowledgements > to send is never emptied, the subsequent polls of > {{ShareConsumeRequestManager}} always tries to build a > shareAcknowledgerRequest. > > Fix - empty the in memory map of acknowledgements in the case where the > request could not be built, because we do not want to send the > acknowledgements again. -- This message was sent by Atlassian Jira (v8.20.10#820010)