In a busy application, the eviction thread may never find pages it can flush to free memory. The result is that busy applications can make WiredTiger attempt to allocate arbitrary amounts of memory to store updates (reads are currently blocked when the memory use becomes too large, but not updates).
Two parts: (1) forced reconciliation of hot pages in order to free memory: blocks all access to that page, potentially split, create split pages, release and allow threads back in.
We may also consider (2) sync: write the page, keep the old versions in memory (related to WT-105). Don't block readers, may or may not block writers. If the page needs to split, need to maintain bookkeeping: overflow pages plus split points and page addresses. We need to block transactional writers, we'll have something outside to do that.
- related to
-
WT-105 make reconciliation just another reader of in-memory pages
- Closed