Description
When the data for a persistent region is being recovered from the disk store the lru limit is constantly checked. If the lru limit is exceeded then value recovery will cease. But for off-heap regions this lru limit should be checking how much off-heap memory has been allocated.
During recovery the amount of heap memory is being checked for an offheap regions. So we can end up recovering too many values to off-heap and running out of off-heap memory during recovery.
The code that causes this problem is: org.apache.geode.internal.cache.lru.HeapLRUCapacityController.createLRUHelper().new AbstractEnableLRU()
{...}.mustEvict(LRUStatistics, Region, int)
During off-heap disk store recovery the Region parameter passed to this method is "null". This causes the following heap check to be done:
if (region == null)