On Thu, Aug 20, 2020 at 07:42:06PM +0200, Vladimír Čunát wrote:
Right, thanks, I did miss the title page when re-reading.
It's a bit confusing that the paragraph after that sentence does not appear to apply to the observed case, but that's not really important... from this discussion I see no other option than shortening the transactions to some magical constant.
(Pages touched in a RO transaction can't be freed until it aborts - that was always clear. For us the overall number of pages don't seem possible to have ran out, assuming the MDB_stat counts reflected their usage before all those operations began.)
I don't remember where to point you so in my own words...
You do understand that no pages reachable by an open read transaction can ever be reclaimed. At the moment, AFAIK a stronger claim can be made about LMDB:
For an open read transaction #n, it avoids reclaiming any pages freed by transactions #n upwards. Keeping a read transaction open indefinitely, at some point you are going to run out of pages to reclaim having to reach for fresh ones. Later, you might run out of those too. This is what you're seeing.
Regards,