[ https://issues.apache.org/jira/browse/KAFKA-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15133305#comment-15133305 ]
Jiangjie Qin edited comment on KAFKA-3197 at 2/4/16 11:30 PM: -------------------------------------------------------------- Thanks [~fpj]. Currently the error handling and retry logic is in the response handler. We wait for a request to fail, reenqueue failed batches in that requests into accumulator and then resend. The part makes me feel uncomfortable is that we have to look into the in flight requests if we want to resend a potentially failed batch to new leader. was (Author: becket_qin): Thanks [~fpj]. > Producer can send message out of order even when in flight request is set to > 1. > ------------------------------------------------------------------------------- > > Key: KAFKA-3197 > URL: https://issues.apache.org/jira/browse/KAFKA-3197 > Project: Kafka > Issue Type: Bug > Components: clients, producer > Affects Versions: 0.9.0.0 > Reporter: Jiangjie Qin > Assignee: Jiangjie Qin > Fix For: 0.9.0.1 > > > The issue we saw is following: > 1. Producer send message 0 to topic-partition-0 on broker A. The in-flight > request to broker A is 1. > 2. The request is somehow lost > 3. Producer refreshed its topic metadata and found leader of > topic-partition-0 migrated from broker A to broker B. > 4. Because there is no in-flight request to broker B. All the subsequent > messages to topic-partition-0 in the record accumulator are sent to broker B. > 5. Later on when the request in step (1) times out, message 0 will be retried > and sent to broker B. At this point, all the later messages has already been > sent, so we have re-order. -- This message was sent by Atlassian JIRA (v6.3.4#6332)