diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java index 188900c..560f0cc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java @@ -355,6 +355,10 @@ public class CombinedBlockCache implements ResizableBlockCache, HeapSize { public void setMaxSize(long size) { this.l1Cache.setMaxSize(size); } + @Override + public long getMaxSize() { + return this.l1Cache.getMaxSize(); + } @Override public void returnBlock(BlockCacheKey cacheKey, Cacheable block) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java index 04700b9..7e42701 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java @@ -827,6 +827,7 @@ public class LruBlockCache implements FirstLevelBlockCache { * Get the maximum size of this cache. * @return max size in bytes */ + @Override public long getMaxSize() { return this.maxSize; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java index 9194fc7..b8b6400 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java @@ -31,4 +31,9 @@ public interface ResizableBlockCache extends BlockCache { * @param size The max heap size. */ void setMaxSize(long size); + + /* + * @return the max heap size that can be used by the BlockCache. + */ + long getMaxSize(); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/TinyLfuBlockCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/TinyLfuBlockCache.java index 5ef8887..46be725 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/TinyLfuBlockCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/TinyLfuBlockCache.java @@ -152,6 +152,11 @@ public final class TinyLfuBlockCache implements FirstLevelBlockCache { } @Override + public long getMaxSize() { + return policy.getMaximum(); + } + + @Override public boolean containsBlock(BlockCacheKey cacheKey) { return cache.asMap().containsKey(cacheKey); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java index bf44d33..0384ec7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java @@ -326,8 +326,8 @@ public class TestCacheConfig { // TODO: Assert sizes allocated are right and proportions. CombinedBlockCache cbc = (CombinedBlockCache)cc.getBlockCache(); BlockCache [] bcs = cbc.getBlockCaches(); - assertTrue(bcs[0] instanceof LruBlockCache); - LruBlockCache lbc = (LruBlockCache)bcs[0]; + assertTrue(bcs[0] instanceof FirstLevelBlockCache); + FirstLevelBlockCache lbc = (FirstLevelBlockCache)bcs[0]; assertEquals(CacheConfig.getFirstLevelCacheSize(this.conf, ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()), lbc.getMaxSize()); assertTrue(bcs[1] instanceof BucketCache); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.java index 5f42a03..41b74be 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.java @@ -605,6 +605,10 @@ public class TestHeapMemoryManager { public void setMaxSize(long size) { this.maxSize = size; } + @Override + public long getMaxSize() { + return this.maxSize; + } @Override public Iterator iterator() {