[ 
https://issues.apache.org/jira/browse/KAFKA-596?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Swapnil Ghike updated KAFKA-596:
--------------------------------

    Attachment: kafka-596.patch

Yes, that's a pretty sharp observation. The current time based roll policy only 
checks whether the segment was not appended for its lifetime. This patch has 
three fixes: 

1. Initial assignment of firstAppendTime in Logsegment, because the non-primary 
constructor could potentially initialize the messageSet and set its size > 0. 
(I don't know if this fix will affect any other jiras.)

2. In maybeRoll(), a new condition makes sure that roll() happens based on time 
only if the messageset size > 0, thus different segments cannot have identical 
starting offsets. It also makes sure that a new segment is not rolled if the 
last segment is not appended with messages until now.

2. A segment is reborn at three places by setting its firstAppendTime to None 
if the message set size is 0 - 
i. Log.maybeRoll()
ii. Logsement.truncateTo()
iii. Log.markedDeletedWhile()
                
> LogSegment.firstAppendTime not reset after truncate to
> ------------------------------------------------------
>
>                 Key: KAFKA-596
>                 URL: https://issues.apache.org/jira/browse/KAFKA-596
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.8
>            Reporter: Jun Rao
>            Assignee: Swapnil Ghike
>              Labels: bugs
>         Attachments: kafka-596.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Currently, we don't reset LogSegment.firstAppendTime after the segment is 
> truncated. What can happen is that we truncate the segment to size 0 and on 
> next append, a new log segment with the same starting offset is rolled 
> because the time-based rolling is triggered.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to