[ https://issues.apache.org/jira/browse/KAFKA-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15130806#comment-15130806 ]
Eno Thereska commented on KAFKA-3197: ------------------------------------- [~jjkoshy], [~becket_qin] Makes sense. I can't help but think of the analogy to file systems. The only way to guarantee order is to do synchronous requests one at a time. Async requests can never guarantee order. I believe the current solution you are providing would work, but I wonder if it's worth taking a step back and simplifying the options (perhaps to just two: async ---with any number of requests outstanding --- and sync). > 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)