[
https://issues.apache.org/jira/browse/KAFKA-1316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14035620#comment-14035620
]
Łukasz Drumiński commented on KAFKA-1316:
-----------------------------------------
Hello everyone,
I have a problem with new Producer from the trunk. It throws concurrent
modification exception. Exception is thrown in Sender.java from the attached
patch by this block of code
{code}
// remove any nodes we aren't ready to send to
for (Node node : ready) {
if (!this.client.ready(node, now))
ready.remove(node);
}
{code}
We can workaround this problem for example like this:
{code}
Set<Node> nodesNotReadyToSend = new HashSet<Node>(ready.size());
// remove any nodes we aren't ready to send to
for (Node node : ready) {
if (!this.client.ready(node, now))
nodesNotReadyToSend.add(node);
}
ready.removeAll(nodesNotReadyToSend);
{code}
> Refactor Sender
> ---------------
>
> Key: KAFKA-1316
> URL: https://issues.apache.org/jira/browse/KAFKA-1316
> Project: Kafka
> Issue Type: Sub-task
> Components: producer
> Reporter: Jay Kreps
> Assignee: Jay Kreps
> Attachments: KAFKA-1316.patch, KAFKA-1316.patch,
> KAFKA-1316_2014-06-03_11:15:38.patch, KAFKA-1316_2014-06-03_14:33:33.patch,
> KAFKA-1316_2014-06-07_11:20:38.patch
>
>
> Currently most of the logic of the producer I/O thread is in Sender.java.
> However we will need to do a fair number of similar things in the new
> consumer. Specifically:
> - Track in-flight requests
> - Fetch metadata
> - Manage connection lifecycle
> It may be possible to refactor some of this into a helper class that can be
> shared with the consumer. This will require some detailed thought.
--
This message was sent by Atlassian JIRA
(v6.2#6252)