diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferArray.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferArray.java index b09dc9a..5329af6 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferArray.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferArray.java @@ -45,7 +45,7 @@ public final class ByteBufferArray { private Lock locks[]; private int bufferSize; private int bufferCount; - private ByteBufferAllocator allocator; + /** * We allocate a number of byte buffers as the capacity. In order not to out * of the array bounds for the last byte(see {@link ByteBufferArray#multiple}), @@ -66,7 +66,6 @@ public final class ByteBufferArray { + bufferCount + ", direct=" + directByteBuffer); buffers = new ByteBuffer[bufferCount + 1]; locks = new Lock[bufferCount + 1]; - this.allocator = allocator; for (int i = 0; i <= bufferCount; i++) { locks[i] = new ReentrantLock(); if (i < bufferCount) { @@ -231,40 +230,28 @@ public final class ByteBufferArray { assert startBuffer >= 0 && startBuffer < bufferCount; assert endBuffer >= 0 && endBuffer < bufferCount || (endBuffer == bufferCount && endBufferOffset == 0); - if (startBuffer >= locks.length || startBuffer < 0) { - String msg = "Failed subArray, start=" + offset + ",startBuffer=" + startBuffer - + ",bufferSize=" + bufferSize; - LOG.error(msg); - throw new RuntimeException(msg); - } int srcIndex = 0, cnt = -1; ByteBuffer[] mbb = new ByteBuffer[endBuffer - startBuffer + 1]; - for (int i = startBuffer,j=0; i <= endBuffer; ++i,j++) { - Lock lock = locks[i]; - lock.lock(); - try { - ByteBuffer bb = buffers[i]; - if (i == startBuffer) { - cnt = bufferSize - startBufferOffset; - if (cnt > len) cnt = len; - ByteBuffer dup = bb.duplicate(); - dup.limit(startBufferOffset + cnt).position(startBufferOffset); - mbb[j] = dup.slice(); - } else if (i == endBuffer) { - cnt = endBufferOffset; - ByteBuffer dup = bb.duplicate(); - dup.position(0).limit(cnt); - mbb[j] = dup.slice(); - } else { - cnt = bufferSize ; - ByteBuffer dup = bb.duplicate(); - dup.position(0).limit(cnt); - mbb[j] = dup.slice(); - } - srcIndex += cnt; - } finally { - lock.unlock(); + for (int i = startBuffer, j = 0; i <= endBuffer; ++i, j++) { + ByteBuffer bb = buffers[i]; + if (i == startBuffer) { + cnt = bufferSize - startBufferOffset; + if (cnt > len) cnt = len; + ByteBuffer dup = bb.duplicate(); + dup.limit(startBufferOffset + cnt).position(startBufferOffset); + mbb[j] = dup.slice(); + } else if (i == endBuffer) { + cnt = endBufferOffset; + ByteBuffer dup = bb.duplicate(); + dup.position(0).limit(cnt); + mbb[j] = dup.slice(); + } else { + cnt = bufferSize; + ByteBuffer dup = bb.duplicate(); + dup.position(0).limit(cnt); + mbb[j] = dup.slice(); } + srcIndex += cnt; } assert srcIndex == len; if (mbb.length > 1) {