...
The group’s offsets expiration time will be when the group becomes Empty
plus retention time of offsets.retention.minutes
(assuming during that time the group does not become active again). When the group is in Empty
state and the timer reaches the expiration time (set in that state), the group transitions to Dead
state, and all group offsets expire and will be removed.
Note that consumers may rejoin the group while the group is in Empty
state. As soon as that happens and the group state changes, the expiration timer will be disabled and the previously set expiration time of group offsets will be invalidated (until the group re-enters the Empty
state when the expiration time will be reset). This is a breakdown of group states and how the offsets expiration works in those states:
Stable
: Group offsets will not expire in this state. Expiration timer is disabled.PreparingRebalance
: Group offsets will not expire in this state. Expiration timer is disabled.CompletingRebalance
: Group offsets will not expire in this state. Expiration timer is disabled.Empty
: Expiration timer starts ticking as soon as group enters this state.Dead
: Group offsets have already expired in this state. When group is inEmpty
state and expiration timer reaches the configured retention time offsets expire and group transitions toDead
state.
The default retention time for group offsets can be customized through the existing offsets.retention.minutes
broker configuration. If, in the future, a need arises for enforcing a per group retention configuration, it can be implemented via a separate KIP.
...