Index: HBaseConfiguration.java =================================================================== --- HBaseConfiguration.java (revision 1183585) +++ HBaseConfiguration.java (working copy) @@ -70,14 +70,18 @@ private static void checkForClusterFreeMemoryLimit(Configuration conf) { float globalMemstoreLimit = conf.getFloat("hbase.regionserver.global.memstore.upperLimit", 0.4f); + int gml = (int)(globalMemstoreLimit * 100); float blockCacheUpperLimit = conf.getFloat("hfile.block.cache.size", 0.2f); - if (1.0f - (globalMemstoreLimit + blockCacheUpperLimit) - < HConstants.HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD) { + int bcml = (int)(blockCacheUpperLimit * 100); + if (100 - (gml + bcml) + < (int)(100 * HConstants.HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD)) { throw new RuntimeException( "Current heap configuration for MemStore and BlockCache exceeds the threshold required for " + "successful cluster operation. The combined value cannot exceed 0.8. Please check " + "the settings for hbase.regionserver.global.memstore.upperLimit and" + - " hfile.block.cache.size in your configuration."); + " hfile.block.cache.size in your configuration." + + " hbase.regionserver.global.memstore.upperLimit=" + gml + + " hfile.block.cache.size " + bcml); } }