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