[ 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)