Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Won't Do
-
None
-
None
-
None
Description
Currently, Streams commits only offsets of partitions it did process records for. Thus, if a partition does not have any data for longer then offsets.retention.minutes (default 1 day) the latest committed offset get's lost. On failure or restart auto.offset.rese kicks in potentially resulting in reprocessing old data.
Thus, Streams should commit all offset on a regular basis. Not sure what the overhead of a commit is – if it's too expensive to commit all offsets on regular commit, we could also have a second config that specifies an "commit.all.interval".
This relates to https://issues.apache.org/jira/browse/KAFKA-3806, so we should sync to get a solid overall solution.
At the same time, it might be better to change the semantics of offsets.retention.minutes in the first place. It might be better to apply this setting only if the consumer group is completely dead (and not on "last commit" and "per partition" basis). Thus, this JIRA would be a workaround fix if core cannot be changed quickly enough.
Attachments
Issue Links
- Is contained by
-
KAFKA-4682 Committed offsets should not be deleted if a consumer is still active (KIP-211)
-
- Resolved
-
- is related to
-
KAFKA-6906 Kafka Streams does not commit transactions if data is produced via wall-clock punctuation
-
- Resolved
-
-
KAFKA-6502 Kafka streams deserialization handler not committing offsets on error records
-
- Resolved
-
-
KAFKA-3806 Adjust default values of log.retention.hours and offsets.retention.minutes
-
- Resolved
-