Michal Turek created KAFKA-3806: ----------------------------------- Summary: Adjust default values of log.retention.hours and offsets.retention.minutes Key: KAFKA-3806 URL: https://issues.apache.org/jira/browse/KAFKA-3806 Project: Kafka Issue Type: Improvement Components: config Affects Versions: 0.10.0.0, 0.9.0.1 Reporter: Michal Turek Priority: Minor
Combination of default values of log.retention.hours (168 hours = 7 days) and offsets.retention.minutes (1440 minutes = 1 day) may be dangerous in special cases. Offset retention should be always greater than log retention. We have observed the following scenario and issue: - Producing of data to a topic was disabled two days ago by producer update, topic wasn't deleted. - Consumer consumed all data and properly committed offsets to Kafka. - Consumer made no more offset commits for that topic because there was no more incoming data and there was nothing to confirm. (We have auto-commit disabled, I'm not sure how behaves enabled auto-commit.) - After one day: Kafka cleared too old offsets according to offsets.retention.minutes. - After two days: Long-term running consumer was restarted after update, it didn't find any committed offsets for that topic since they were deleted by offsets.retention.minutes so it started consuming from the beginning. - The messages were still in Kafka due to larger log.retention.hours, about 5 days of messages were read again. Known workaround to solve this issue: - Explicitly configure log.retention.hours and offsets.retention.minutes, don't use defaults. Proposals: - Prolong default value of offsets.retention.minutes to be at least twice larger than log.retention.hours. - Check these values during Kafka startup and log a warning if offsets.retention.minutes is smaller than log.retention.hours. - Add a note to migration guide about differences between storing of offsets in ZooKeeper and Kafka (http://kafka.apache.org/documentation.html#upgrade). -- This message was sent by Atlassian JIRA (v6.3.4#6332)