[ https://issues.apache.org/jira/browse/KAFKA-4365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15628696#comment-15628696 ]
Rajini Sivaram commented on KAFKA-4365: --------------------------------------- [PR #1836|https://github.com/apache/kafka/pull/1836] for KAFKA-3703 addresses this issue. > In case async producer closes the TCP connection to Kafka broker, last sent > messages might be lost. > --------------------------------------------------------------------------------------------------- > > Key: KAFKA-4365 > URL: https://issues.apache.org/jira/browse/KAFKA-4365 > Project: Kafka > Issue Type: Bug > Components: clients > Affects Versions: 0.10.0.1 > Reporter: Ciprian Pascu > > I am using kafka-python producer (https://github.com/dpkp/kafka-python). The > producer is set as async (acks=0) and sends a burst of, for example, 1000 > messages. As consumer I use either Logstash or the Kafka console consumer. > Quite often it can be seen that the consumer gets less than 1000 messages. > Also, by checking the messages written by the brokers on the disk, it can be > seen that not all messages are written. Still, by using tcpdump and > Wireshark, I can see that all messages have reached the brokers. Also, by > adding some test logs in Kafka code, I could see that the messages are added > to the staged receives, but not to completed receives > (org.apache.kafka.common.network.Selector class). And I believe that happens > because of the 'isMute' method in the classes implementing > org.apache.kafka.common.network.TransportLayer: they all(both) seem to check > also that the 'key' is valid, which doesn't hold true anymore if the TCP > connection has been closed; despite that, Kafka has already those messages as > staged receives, so it could add them to the log; besides, since acks=0, no > responses are needed to be sent. > This issue is not visible if acks=1 (synchronous producer) or the producer > keeps the TCP connections to brokers all the time up or enough time for Kafka > to actually write the logs to disk. > Proposed solution: remove the 'key.isValid()' check from 'isMute' method in > SslTransportLayer and PlaintextTransportLayer classes > (org.apache.kafka.common.network package.) -- This message was sent by Atlassian JIRA (v6.3.4#6332)