The configuration "offsets.retention.minutes" is documented as being an integer. When large values are set (i.e. Integer.MAX_VALUE), an overflow error occurs when converting from minutes to milliseconds. For instance, setting the config value as 2147483647 results in a offsetsRetentionMs of -60000. This means that all committed offsets are past their expiration when they are created and will be nullified on the next expiration check, which is unexpected given the type of the configuration.
The fix would be to change
"offsetsRetentionMs = config.offsetsRetentionMinutes * 60 * 1000L"
"offsetsRetentionMs = config.offsetsRetentionMinutes * 60L * 1000L"