A transacted send can block pending store usage, an active transaction will be visible to the store. This will block kahadb from gc of data files that occur after the inflight transaction.
Consumers acking the pending messages can create additional data files that can't be gced. This is a problem because the queue can drain and not release the producer.
With message database trace is is possible to see:
Here there is a build up of data files, after the inflight transaction, containing acks and messages that could be cleaned up.
The inflight transactions should protect a range of data files that they reference, not all subsequent data files.