Consider a scenario where a consumer reads four messages at a time. It reads up to message 6 but the last commit offset is recorded as 4. If the consumer were to crash at this point and another consumer took up processing this partition, then the new consumer will start reading messages starting from the record numbered 5. Evidently, some of the records will end up being processed twice.