Repository: hbase Updated Branches: refs/heads/0.98 626d12f42 -> 7e1e818bb
HBASE-11550 Custom value for BUCKET_CACHE_BUCKETS_KEY should be sorted (Gustavo Anatoly) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7e1e818b Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7e1e818b Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7e1e818b Branch: refs/heads/0.98 Commit: 7e1e818bbc0bed59c12fbd8c003eaed702cf16ad Parents: 626d12f Author: Nick Dimiduk <[email protected]> Authored: Wed Aug 13 21:07:31 2014 -0700 Committer: Nick Dimiduk <[email protected]> Committed: Wed Aug 13 21:20:49 2014 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java | 2 +- .../hadoop/hbase/io/hfile/bucket/BucketAllocator.java | 9 ++++----- .../apache/hadoop/hbase/io/hfile/bucket/BucketCache.java | 6 ++---- 3 files changed, 7 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/7e1e818b/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 03d11ae..9153c8a 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 @@ -426,7 +426,7 @@ public class CacheConfig { if (configuredBucketSizes != null) { bucketSizes = new int[configuredBucketSizes.length]; for (int i = 0; i < configuredBucketSizes.length; i++) { - bucketSizes[i] = Integer.parseInt(configuredBucketSizes[i]); + bucketSizes[i] = Integer.parseInt(configuredBucketSizes[i].trim()); } } if (combinedWithLru) { http://git-wip-us.apache.org/repos/asf/hbase/blob/7e1e818b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java index 1cfb408..db50e75 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.io.hfile.bucket; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -27,6 +28,7 @@ import java.util.concurrent.atomic.AtomicLong; import com.google.common.base.Objects; import com.google.common.base.Preconditions; +import com.google.common.primitives.Ints; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -298,11 +300,8 @@ public final class BucketAllocator { BucketAllocator(long availableSpace, int[] bucketSizes) throws BucketAllocatorException { this.bucketSizes = bucketSizes == null ? DEFAULT_BUCKET_SIZES : bucketSizes; - int largestBucket = this.bucketSizes[0]; - for (int i : this.bucketSizes) { - largestBucket = Math.max(largestBucket, i); - } - this.bigItemSize = largestBucket; + Arrays.sort(this.bucketSizes); + this.bigItemSize = Ints.max(this.bucketSizes); this.bucketCapacity = FEWEST_ITEMS_IN_BUCKET * bigItemSize; buckets = new Bucket[(int) (availableSpace / bucketCapacity)]; if (buckets.length < this.bucketSizes.length) http://git-wip-us.apache.org/repos/asf/hbase/blob/7e1e818b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java index acf43f3..981d575 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java @@ -169,7 +169,6 @@ public class BucketCache implements BlockCache, HeapSize { private long cacheCapacity; /** Approximate block size */ private final long blockSize; - private final int[] bucketSizes; /** Duration of IO errors tolerated before we disable cache, 1 min as default */ private final int ioErrorsTolerationDuration; @@ -235,7 +234,6 @@ public class BucketCache implements BlockCache, HeapSize { this.cacheCapacity = capacity; this.persistencePath = persistencePath; this.blockSize = blockSize; - this.bucketSizes = bucketSizes; this.ioErrorsTolerationDuration = ioErrorsTolerationDuration; bucketAllocator = new BucketAllocator(capacity, bucketSizes); @@ -251,7 +249,7 @@ public class BucketCache implements BlockCache, HeapSize { if (ioEngine.isPersistent() && persistencePath != null) { try { - retrieveFromFile(); + retrieveFromFile(bucketSizes); } catch (IOException ioex) { LOG.error("Can't restore from file because of", ioex); } catch (ClassNotFoundException cnfe) { @@ -869,7 +867,7 @@ public class BucketCache implements BlockCache, HeapSize { } @SuppressWarnings("unchecked") - private void retrieveFromFile() throws IOException, BucketAllocatorException, + private void retrieveFromFile(int[] bucketSizes) throws IOException, BucketAllocatorException, ClassNotFoundException { File persistenceFile = new File(persistencePath); if (!persistenceFile.exists()) {
