You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Jun Rao (Jira)" <ji...@apache.org> on 2022/03/09 20:05:00 UTC
[jira] [Created] (KAFKA-13723) max.compaction.lag.ms implemented incorrectly
Jun Rao created KAFKA-13723:
-------------------------------
Summary: max.compaction.lag.ms implemented incorrectly
Key: KAFKA-13723
URL: https://issues.apache.org/jira/browse/KAFKA-13723
Project: Kafka
Issue Type: Bug
Components: core
Affects Versions: 2.3.0
Reporter: Jun Rao
In https://issues.apache.org/jira/browse/KAFKA-7321, we introduced max.compaction.lag.ms to guarantee that a record be cleaned before a certain time.
The implementation in LogCleanerManager has the following code. The path for earliestDirtySegmentTimestamp < cleanUntilTime seems incorrect. In that case, it seems that we should set the delay to 0 so that we could trigger cleaning immediately since the segment has been dirty for longer than max.compaction.lag.ms.
{code:java}
def maxCompactionDelay(log: UnifiedLog, firstDirtyOffset: Long, now: Long) : Long = {
...
val maxCompactionLagMs = math.max(log.config.maxCompactionLagMs, 0L)
val cleanUntilTime = now - maxCompactionLagMs
if (earliestDirtySegmentTimestamp < cleanUntilTime)
cleanUntilTime - earliestDirtySegmentTimestamp
else
0L
}{code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)