[ https://issues.apache.org/jira/browse/HBASE-9840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13805527#comment-13805527 ]
Vladimir Rodionov commented on HBASE-9840: ------------------------------------------ When all three buckets become full all new blocks are inserted at 0.25 split in a queue. Always, because : 1. cache entries never expire. 2. all buckets manage eviction independently. > Large scans and BlockCache evictions problems > --------------------------------------------- > > Key: HBASE-9840 > URL: https://issues.apache.org/jira/browse/HBASE-9840 > Project: HBase > Issue Type: Bug > Reporter: Lars Hofhansl > > I just ran into a scenario that baffled me first, but after some reflection > makes sense. I ran a very large scan that filled up most of the block cache > with my scan's data. I ran that scan a few times. > That I ran a much smaller scan, and this scan will never get all its blocks > cached if it does not fit entirely into the remaining BlockCache; regardless > how I often I run it! > The reason is that the blocks of the first large scan were all promoted. > Since the 2nd scan did not fully fit into the cache all blocks are > round-robin evicted as I rerun the scan. Thus those blocks will never get > accessed more than once before they get evicted again. > Since promoted blocks are not demoted the large scan's block will never be > evicted unless we have another small enough scan/get that can promote its > blocks. > Not sure what the proper solution is, but it seems only a LRU cache that can > expire blocks over time would solve this. > Granted, this is a pretty special case. > Edit: My usual spelling digressions. -- This message was sent by Atlassian JIRA (v6.1#6144)