[
https://issues.apache.org/jira/browse/KAFKA-3651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15269895#comment-15269895
]
ASF GitHub Bot commented on KAFKA-3651:
---------------------------------------
GitHub user MayureshGharat opened a pull request:
https://github.com/apache/kafka/pull/1314
KAFKA-3651 : Remove the condition variable waiting on memory availabilty in
Bufferpool when a TimeoutException is thrown
Whenever the BufferPool throws a "Failed to allocate memory within the
configured max blocking time" exception, it should also remove the condition
object from the waiters deque
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/MayureshGharat/kafka kafka-3651
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/1314.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1314
----
----
> Whenever the BufferPool throws a "Failed to allocate memory within the
> configured max blocking time" exception, it should also remove the condition
> object from the waiters deque
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: KAFKA-3651
> URL: https://issues.apache.org/jira/browse/KAFKA-3651
> Project: Kafka
> Issue Type: Bug
> Reporter: Mayuresh Gharat
> Assignee: Mayuresh Gharat
> Fix For: 0.10.0.0
>
>
> "this.waiters.remove(moreMemory);" should happen before the exception
> is thrown.
> .Otherwise the waiting thread count will never get to 0 after the exception
> and batching will not occur. This is because in the RecordAccumulator.ready
> method the exhausted is set as
> boolean exhausted = this.free.queued() > 0 where free.queued() returns the
> waiters.size().
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)