[
https://issues.apache.org/jira/browse/KAFKA-1838?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tom Lee updated KAFKA-1838:
---------------------------
Attachment: interruptable-producers-v1.patch
> Better interrupt handling in producers
> --------------------------------------
>
> Key: KAFKA-1838
> URL: https://issues.apache.org/jira/browse/KAFKA-1838
> Project: Kafka
> Issue Type: Improvement
> Components: producer
> Affects Versions: 0.8.1.1
> Reporter: Tom Lee
> Assignee: Jun Rao
> Labels: patch
> Attachments: interruptable-producers-v1.patch
>
>
> Interrupting a thread where a Producer is in use can cause unexpected
> behavior. In the case of an async type producer, interrupting the producer
> thread will like lead to a QueueFullException with the default configuration
> (see
> https://github.com/apache/kafka/blob/0.8.1.1/core/src/main/scala/kafka/producer/Producer.scala#L105-L112
> )
> This obviously can't be safely be used in client code to determine if the
> thread was interrupted because the async producer's message queue may simply
> be backed up. It's important to be able to distinguish between interrupts vs
> full queues so client thread pools can be shutdown properly etc.
> In the case of a sync producer, there's the possibility an
> InterruptedException will bubble up out of Producer.send. This will likely
> result in an UndeclaredThrowableException in Java code -- this is more
> helpful than a QueueFullException, but it's still somewhat awkward.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)