You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Kowshik Prakasam (Jira)" <ji...@apache.org> on 2021/06/01 21:42:00 UTC
[jira] [Created] (KAFKA-12876) Log.roll() could forever delete
producer state snapshot of empty active segment
Kowshik Prakasam created KAFKA-12876:
----------------------------------------
Summary: Log.roll() could forever delete producer state snapshot of empty active segment
Key: KAFKA-12876
URL: https://issues.apache.org/jira/browse/KAFKA-12876
Project: Kafka
Issue Type: Bug
Reporter: Kowshik Prakasam
In Log.scala, during roll, if there is an existing segment of 0 size with the newOffsetToRoll then we end up [deleting|https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/log/Log.scala#L1610] the active segment asynchronously. This will also delete the producer state snapshot. However, we also [take a producer snapshot|https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/log/Log.scala#L1639] on newOffsetToRoll before we add the new segment. This addition could race with snapshot deletion and we can end up losing the snapshot forever. So, in this case the fix is to not delete the snapshot because we end up recreating it anyway.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)