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

Reply via email to