Dong Lin created KAFKA-4820:
-------------------------------
Summary: ConsumerNetworkClient.send() should not require global
lock
Key: KAFKA-4820
URL: https://issues.apache.org/jira/browse/KAFKA-4820
Project: Kafka
Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
Currently `ConsumerNetworkClient.send()` needs to acquire global lock of
`ConumserNetworkClient` in order to enqueue requests. If another thread has
called `ConsumerNetworkClient.poll(..)`, that thread may be holding the lock
while blocked on `nioSelector.select(ms)`. This causes problem because the user
thread which calls `ConsumerNetworkClient.send()` will also block waiting for
that `nioSelector.select(ms)` to finish.
One way to address this problem is to use thread-safe classes for the variable
`ConsumeNetworkClient.unsent` so that it is protected by its own lock. Then
`ConsumerNetworkClient.send()` will no longer require global lock in order to
enqueue request.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)