Repository: hbase Updated Branches: refs/heads/branch-1.2 922c3ba55 -> 7a45596b4
Revert "HBASE-14178 regionserver blocks because of waiting for offsetLock" This reverts commit 922c3ba554eeb13c2390cdd1140b26006bb8a7e9. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a4092444 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a4092444 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a4092444 Branch: refs/heads/branch-1.2 Commit: a4092444e6eba39e7523c118e80b3fb726485984 Parents: 922c3ba Author: zhangduo <zhang...@apache.org> Authored: Thu Aug 6 17:11:53 2015 +0800 Committer: zhangduo <zhang...@apache.org> Committed: Thu Aug 6 17:11:53 2015 +0800 ---------------------------------------------------------------------- .../hadoop/hbase/io/hfile/CacheConfig.java | 42 -------------------- .../hadoop/hbase/io/hfile/HFileReaderV2.java | 18 ++++----- 2 files changed, 9 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/a4092444/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java index 26eb1da..0ed3cbd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java @@ -431,48 +431,6 @@ public class CacheConfig { return isBlockCacheEnabled() && this.prefetchOnOpen; } - /** - * Return true if we may find this type of block in block cache. - * <p/> - * TODO: today {@code family.isBlockCacheEnabled()} only means {@code cacheDataOnRead}, so here we - * consider lots of other configurations such as {@code cacheDataOnWrite}. We should fix this in - * the future, {@code cacheDataOnWrite} should honor the CF level {@code isBlockCacheEnabled} - * configuration. - */ - public boolean shouldReadBlockFromCache(BlockType blockType) { - if (!isBlockCacheEnabled()) { - return false; - } - if (cacheDataOnRead) { - return true; - } - if (prefetchOnOpen) { - return true; - } - if (cacheDataOnWrite) { - return true; - } - if (blockType == null) { - return true; - } - if (blockType.getCategory() == BlockCategory.BLOOM || - blockType.getCategory() == BlockCategory.INDEX) { - return true; - } - return false; - } - - /** - * If we make sure the block could not be cached, we will not acquire the lock - * otherwise we will acquire lock - */ - public boolean shouldLockOnCacheMiss(BlockType blockType) { - if (blockType == null) { - return true; - } - return shouldCacheBlockOnRead(blockType.getCategory()); - } - @Override public String toString() { if (!isBlockCacheEnabled()) { http://git-wip-us.apache.org/repos/asf/hbase/blob/a4092444/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java index 67aa922..4790ee9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java @@ -393,11 +393,12 @@ public class HFileReaderV2 extends AbstractHFileReader { TraceScope traceScope = Trace.startSpan("HFileReaderV2.readBlock"); try { while (true) { + if (useLock) { + lockEntry = offsetLock.getLockEntry(dataBlockOffset); + } + // Check cache for block. If found return. if (cacheConf.isBlockCacheEnabled()) { - if (useLock) { - lockEntry = offsetLock.getLockEntry(dataBlockOffset); - } // Try and get the block from the block cache. If the useLock variable is true then this // is the second time through the loop and it should not be counted as a block cache miss. HFileBlock cachedBlock = getCachedBlock(cacheKey, cacheBlock, useLock, isCompaction, @@ -422,14 +423,13 @@ public class HFileReaderV2 extends AbstractHFileReader { // Cache-hit. Return! return cachedBlock; } - if (!useLock && cacheBlock && cacheConf.shouldLockOnCacheMiss(expectedBlockType)) { - // check cache again with lock - useLock = true; - continue; - } // Carry on, please load. } - + if (!useLock) { + // check cache again with lock + useLock = true; + continue; + } if (Trace.isTracing()) { traceScope.getSpan().addTimelineAnnotation("blockCacheMiss"); }