[ https://issues.apache.org/jira/browse/KAFKA-736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13566215#comment-13566215 ]
Jay Kreps commented on KAFKA-736: --------------------------------- This is basically good, but the comments and naming are all just carrying through specifics of producer behavior into the network layer which is a no-no. Instead, think of this as a general feature you are implementing: 1. server enqueues one request at a time 2. null as the response send indicates no response This is a nice feature for our socket server to have. Specifically: 1. RequestChannel.getFakeProducerResponse? Let's not add this as a public method on the thing that handles request queueing to our network server. That doesn't seem like part of the contract of a request queue. Can you remove that and the getShutdownReceive producer request that victor seems to have hacked in. The socket server's idea of a request is just a byte buffer. There shouldn't be any notion of producers or anything like that. 2. SocketServer.processNewResponses() the actual logic here is good, using a null send is a very logical way to say "no response". Please remove the comment about producers and num.acks and just describe the feature you have implemented: null responseSend means no response to send. This is just part of the contract of socket server. 3. SocketServer.processNewResponses() fix misformatted else statement. 4. SyncProducer.send--this is an api change is that going to break anything? Can we just have it return null? 5. SyncProducer.doSend--this sends a generic request, you can't add numacks since acks are specific to ProducerRequest. 6. Not sure if I get why we need to override required.request.acks. If we want to override is the a generic place to do that instead of each test? 7. It would be good to add a unit test for one-way requests in the socket server. 8. It would be good to add a unit test for the producer num.acks=0 feature. We also should do a quick perf test on your machine to assess the impact of only reading one request at a time (if any). > Add an option to the 0.8 producer to mimic 0.7 producer behavior > ---------------------------------------------------------------- > > Key: KAFKA-736 > URL: https://issues.apache.org/jira/browse/KAFKA-736 > Project: Kafka > Issue Type: Improvement > Components: producer > Affects Versions: 0.8 > Reporter: Neha Narkhede > Assignee: Neha Narkhede > Priority: Blocker > Labels: p2, replication-performance > Attachments: kafka-736-draft.patch, kafka-736-v1.patch > > Original Estimate: 24h > Remaining Estimate: 24h > > I profiled a producer throughput benchmark between a producer and a remote > broker. It turns out that the background send threads spends ~97% of its time > waiting to read the acknowledgement from the broker. > I propose we change the current behavior of request.required.acks=0 to mean > no acknowledgement from the broker. This will mimic the 0.7 producer behavior > and will enable tuning the producer for very high throughput. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira