You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Himanshu Vashishtha (JIRA)" <ji...@apache.org> on 2013/05/04 01:30:16 UTC
[jira] [Resolved] (HBASE-8476) locateRegionInMeta should check the
cache before doing the prefetch
[ https://issues.apache.org/jira/browse/HBASE-8476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Himanshu Vashishtha resolved HBASE-8476.
----------------------------------------
Resolution: Fixed
Assignee: Himanshu Vashishtha (was: Amitanand Aiyer)
Folded it in HBASE-8346
> locateRegionInMeta should check the cache before doing the prefetch
> -------------------------------------------------------------------
>
> Key: HBASE-8476
> URL: https://issues.apache.org/jira/browse/HBASE-8476
> Project: HBase
> Issue Type: Bug
> Reporter: Amitanand Aiyer
> Assignee: Himanshu Vashishtha
> Priority: Minor
> Fix For: 0.89-fb, 0.95.2
>
>
> locateRegionInMeta uses a regionLockObject to synchronize all accesses to prefetch the RegionCache.
> synchronized (regionLockObject) {
> // If the parent table is META, we may want to pre-fetch some
> // region info into the global region cache for this table.
> if (Bytes.equals(parentTable, HConstants.META_TABLE_NAME) &&
> (getRegionCachePrefetch(tableName)) ) {
> prefetchRegionCache(tableName, row);
> }
> // Check the cache again for a hit in case some other thread made the
> // same query while we were waiting on the lock. If not supposed to
> // be using the cache, delete any existing cached location so it won't
> // interfere.
> if (useCache) {
> location = getCachedLocation(tableName, row);
> if (location != null) {
> return location;
> }
> } else {
> deleteCachedLocation(tableName, row);
> }
>
> However, for this to be effective, we need to check the cache as soon as we grab the lock; before doing the prefetch. Checking the cache after doing the prefetch does not help the current thread, in case another thread has done the prefetch.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira