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 26eb1da06e5..0ed3cbdacd7 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. - *

- * 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()) { 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 67aa922fae9..4790ee907d5 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"); }