[
https://issues.apache.org/jira/browse/KAFKA-2960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15047753#comment-15047753
]
Xing Huang commented on KAFKA-2960:
-----------------------------------
The Partition class check log end offset and current ISR to decide if there's
enough replicas. But after a leader become follower, it may truncate its log,
and if it became leader again very quickly, there is a chance that another
client sent messages to it, so the LEO will increase, and the current ISR has
changed to 2, so the DelayedProduce is satisfied, even acks=-1 and min.isr=2
and replica.factor=3
> DelayedProduce may cause message lose during repeatly leader change
> -------------------------------------------------------------------
>
> Key: KAFKA-2960
> URL: https://issues.apache.org/jira/browse/KAFKA-2960
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 0.9.0.0
> Reporter: Xing Huang
> Fix For: 0.9.1.0
>
>
> related to #KAFKA-1148
> When a leader replica became follower then leader again, it may truncated its
> log as follower. But the second time it became leader, its ISR may shrink and
> if at this moment new messages were appended, the DelayedProduce generated
> when it was leader the first time may be satisfied, and the client will
> receive a response with no error. But, actually the messages were lost.
> We simulated this scene, which proved the message lose could happen. And it
> seems to be the reason for a data lose recently happened to us according to
> broker logs and client logs.
> I think we should check the leader epoch when send a response, or satisfy
> DelayedProduce when leader change as described in #KAFKA-1148.
> And we may need an new error code to inform the producer about this error.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)