[ 
https://issues.apache.org/jira/browse/GEODE-2097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15969340#comment-15969340
 ] 

ASF subversion and git services commented on GEODE-2097:
--------------------------------------------------------

Commit 5c5c947978e8683f39dd9cae24fda4f6cd87f3e8 in geode's branch 
refs/heads/develop from [~dschneider]
[ https://git-wip-us.apache.org/repos/asf?p=geode.git;h=5c5c947 ]

GEODE-2097: check offheap limit during recovery

During disk recovery of offheap data,
the offheap LRU eviction limit is now checked
instead of the heap limit.

A new integration test has been added that would
run out of offheap memory during recovery without
this fix.

This fix also includes some refactoring of the
resource manager memory monitors into a new common
interface named MemoryMonitor.


> Offheap persistent heapLRU regions can run out of offheap memory during 
> recovery
> --------------------------------------------------------------------------------
>
>                 Key: GEODE-2097
>                 URL: https://issues.apache.org/jira/browse/GEODE-2097
>             Project: Geode
>          Issue Type: Bug
>          Components: offheap
>            Reporter: Darrel Schneider
>            Assignee: Darrel Schneider
>
> 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) {
>           return resourceManager.getHeapMonitor().getState().isEviction();
>         }



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to