Jiangjie Qin created KAFKA-4235: ----------------------------------- Summary: Fix the closing order in Sender.initiateClose(). Key: KAFKA-4235 URL: https://issues.apache.org/jira/browse/KAFKA-4235 Project: Kafka Issue Type: Bug Affects Versions: 0.10.0.0 Reporter: Jiangjie Qin Assignee: Jiangjie Qin Fix For: 0.10.1.0
In the initiate close, we need to call RecordAccumulator.close() before set the running to false. Otherwise we may miss a callback if the following sequence happens: 1. Thread 1 call Sender.forceClose(), Sender.forceClosed is set to true, Sender.running is set to false. 2. Sender thread saw running == false, exited the while loop 3. Sender thread saw the forceClose == true and aborted all the existing incomplete batches 4. Thread 2 append a message into the accumulator. 5. Thread 1 closes the accumulator 6. Sender thread exits without firing callback for the message in step (4) To fix this, we need close the record accumulator before set the running flag to false in the sender thread. -- This message was sent by Atlassian JIRA (v6.3.4#6332)