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)