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

Jiangtao Liu updated KAFKA-8270:
--------------------------------
    Description: 
What's the issue?
{quote}There were log segments, which can not be deleted over configured 
retention hours.
{quote}
What are impacts? 
{quote} # Log space keep in increasing and finally cause space shortage.
 # There are lots of log segment rolled with a small size. e.g log segment may 
be only 50mb, not the expected 1gb.
 # Kafka stream or client may experience missing data.{quote}
How to reproduce it?
 # 
{quote}Make sure Kafka client and server are not hosted in the same machine.
{quote}
 # 
{quote}Configure log.message.timestamp.type with *CreateTime*, not 
LogAppendTime.
{quote}
 # 
{quote}Hack Kafka client's system clock time with a *future time*, e.g 
03/04/*2025*, 3:25:52 PM 
[GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]
{quote}
 # 
{quote}Send message from Kafka client to server.
{quote}

What's Next?
 # 
{quote}Check the timestamp in segment *.timeindex (e.g 
00000000035957300794.timeindex) and record in segment *.log. You will see all 
the timestamp values in **.timeindex are messed up with a future time after 
`03/04/*2025*, 3:25:52 PM 
[GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]`.   (let's 
say 00000000035957300794.log is the log segment which receive the record 
firstly. Later we will use it in #3)
{quote}
 # 
{quote}You will also see the log segment will be rolled with a smaller size 
(e.g 50mb) than configured segment max size (e.g 1gb). 
{quote}
 # 
{quote}All of log segments including 00000000035957300794.* and new rolled, 
will not be deleted over retention hours.
{quote}

What's the particular logic to cause this issue?
 # 
{quote}private def deletableSegments(predicate: (LogSegment, 
Option[LogSegment]) => 
Boolean)|[https://github.com/apache/kafka/blob/1.1/core/src/main/scala/kafka/log/Log.scala#L1227]]
 will always return empty deletable log segments.{color:#172b4d} {color}
{quote}

  was:
What's the issue?
{quote}There were log segments, which can not be deleted over configured 
retention hours.
{quote}
What are impacts? 
{quote} # Log space keep in increasing and finally cause space shortage.
 # There are lots of log segment rolled with a small size. e.g log segment may 
be only 50mb, not the expected 1gb.
 # Kafka stream or client may experience missing data.{quote}
How to reproduce it?
 # 
{quote}Make sure Kafka client and server are not on the same machine.
{quote}
 # 
{quote}Configure log.message.timestamp.type as *CreateTime*, not LogAppendTime.
{quote}
 # 
{quote}Hack Kafka client's system clock time as a *future time*, e.g 
03/04/*2025*, 3:25:52 PM 
[GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]
{quote}
 # 
{quote}Send message from Kafka client to server.
{quote}

What's Next?
 # 
{quote}Check the timestamp in log time index and record in log segment(e.g 
00000000035957300794.timeindex). You will see all the timestamp values in 
*.timeindex are messed up with a future time after `03/04/*2025*, 3:25:52 PM 
[GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]`.  
{quote}
 # 
{quote}You will also see the new rolled log segment's size smaller than the 
configured log segment size after waiting for a while.
{quote}
 # 
{quote}Log segment (00000000035957300794.log|timeindex) and the rest of new 
rolled log segments will not be deleted over retention hours.
{quote}

What's the particular logic to cause this issue?
 # 
{quote}private def deletableSegments(predicate: (LogSegment, 
Option[LogSegment]) => 
Boolean)|[https://github.com/apache/kafka/blob/1.1/core/src/main/scala/kafka/log/Log.scala#L1227]]
 will always return empty deletable log segments.{color:#172b4d} {color}
{quote}


> Kafka timestamp-based retention policy is not working when Kafka client's 
> time is not reliable.
> -----------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-8270
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8270
>             Project: Kafka
>          Issue Type: Bug
>          Components: log, log cleaner, logging
>    Affects Versions: 1.1.1
>            Reporter: Jiangtao Liu
>            Priority: Major
>              Labels: storage
>         Attachments: Screen Shot 2019-04-20 at 10.57.59 PM.png
>
>
> What's the issue?
> {quote}There were log segments, which can not be deleted over configured 
> retention hours.
> {quote}
> What are impacts? 
> {quote} # Log space keep in increasing and finally cause space shortage.
>  # There are lots of log segment rolled with a small size. e.g log segment 
> may be only 50mb, not the expected 1gb.
>  # Kafka stream or client may experience missing data.{quote}
> How to reproduce it?
>  # 
> {quote}Make sure Kafka client and server are not hosted in the same machine.
> {quote}
>  # 
> {quote}Configure log.message.timestamp.type with *CreateTime*, not 
> LogAppendTime.
> {quote}
>  # 
> {quote}Hack Kafka client's system clock time with a *future time*, e.g 
> 03/04/*2025*, 3:25:52 PM 
> [GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]
> {quote}
>  # 
> {quote}Send message from Kafka client to server.
> {quote}
> What's Next?
>  # 
> {quote}Check the timestamp in segment *.timeindex (e.g 
> 00000000035957300794.timeindex) and record in segment *.log. You will see all 
> the timestamp values in **.timeindex are messed up with a future time after 
> `03/04/*2025*, 3:25:52 PM 
> [GMT-08:00|https://www.epochconverter.com/timezones?q=1741130752]`.   (let's 
> say 00000000035957300794.log is the log segment which receive the record 
> firstly. Later we will use it in #3)
> {quote}
>  # 
> {quote}You will also see the log segment will be rolled with a smaller size 
> (e.g 50mb) than configured segment max size (e.g 1gb). 
> {quote}
>  # 
> {quote}All of log segments including 00000000035957300794.* and new rolled, 
> will not be deleted over retention hours.
> {quote}
> What's the particular logic to cause this issue?
>  # 
> {quote}private def deletableSegments(predicate: (LogSegment, 
> Option[LogSegment]) => 
> Boolean)|[https://github.com/apache/kafka/blob/1.1/core/src/main/scala/kafka/log/Log.scala#L1227]]
>  will always return empty deletable log segments.{color:#172b4d} {color}
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to