[ 
https://issues.apache.org/jira/browse/KAFKA-1316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14027085#comment-14027085
 ] 

Neha Narkhede commented on KAFKA-1316:
--------------------------------------

2. Ya, I kind of agree with you. These configs might start off identical but 
might evolve independently.
3. Following up on our discussion, I think there is value in refactoring the 
logic to select a node (out of all nodes) that can receive a request and it 
makes sense for this logic to just return the least loaded node. In that case, 
we would end up with the following APIs in NetworkClient - 
selectLeastLoadedNode(Cluster), isReady(Node), makeReady(Node) and poll(). 
selectLeastLoadedNode() will return the least loaded node, but you may not have 
a connection to that node necessarily. So the isReady() call will return false 
at which point you have to invoke makeReady(), finally followed up with poll().

> 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_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