By default, each ledger is allowed to grow to ~50k entries before it is closed, and put into read-only mode. If you have batching enabled on the producer, than each “entry” contains not one, but several messages. Therefore the potential size in terms of message count (backlog), and physical storage can be very big. Now, in a missing ack scenario where one of these entries were delivered but never ack’ed, the entire ledger itself MUST be retained. This is because it is an append-only log. So even a single unack’ed message could result in a backlog of a ~500k messages (with an average batching size of 10), and a storage size of 5-6GB depending on the message size. This effect can easily compound if there are multiple ledgers with unack’ed messages.