If consumers are lagging behind, then log cleanup activities can close a file channel opened by Log.read
1. before the transfer the starts (broker will probably throw an exception in this case) OR
2. during the transfer (possibility of half baked corrupted data being sent to consumer?)
We probably haven't hit this race condition in practice because the consumers consume data well before the logs are cleaned up.
To avoid this issue, we could avoid cleaning up the file until the transfer is complete. Reference counting?