Repository: hbase Updated Branches: refs/heads/master 68b2e0f7d -> b401a35fd
HBASE-17950 Write the chunkId also as Int instead of long into the first byte of the chunk (Ram) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b401a35f Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b401a35f Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b401a35f Branch: refs/heads/master Commit: b401a35fdc883c74847bc41131e5900939558dab Parents: 68b2e0f Author: Ramkrishna <ramkrishna.s.vasude...@intel.com> Authored: Fri Apr 28 14:43:19 2017 +0530 Committer: Ramkrishna <ramkrishna.s.vasude...@intel.com> Committed: Fri Apr 28 14:44:46 2017 +0530 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/regionserver/Chunk.java | 4 ++-- .../apache/hadoop/hbase/regionserver/OffheapChunk.java | 2 +- .../apache/hadoop/hbase/regionserver/OnheapChunk.java | 2 +- .../hadoop/hbase/regionserver/TestDefaultMemStore.java | 4 ++-- .../hbase/regionserver/TestMemStoreChunkPool.java | 2 +- .../hadoop/hbase/regionserver/TestMemStoreLAB.java | 12 ++++++------ .../hbase/regionserver/TestMemstoreLABWithoutPool.java | 8 ++++---- 7 files changed, 17 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java index fc4aa0b..a45d801 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java @@ -100,8 +100,8 @@ public abstract class Chunk { throw e; } // Mark that it's ready for use - // Move 8 bytes since the first 8 bytes are having the chunkid in it - boolean initted = nextFreeOffset.compareAndSet(UNINITIALIZED, Bytes.SIZEOF_LONG); + // Move 4 bytes since the first 4 bytes are having the chunkid in it + boolean initted = nextFreeOffset.compareAndSet(UNINITIALIZED, Bytes.SIZEOF_INT); // We should always succeed the above CAS since only one thread // calls init()! Preconditions.checkState(initted, "Multiple threads tried to init same chunk"); http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OffheapChunk.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OffheapChunk.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OffheapChunk.java index e244a33..f5d4905 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OffheapChunk.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OffheapChunk.java @@ -41,7 +41,7 @@ public class OffheapChunk extends Chunk { void allocateDataBuffer() { if (data == null) { data = ByteBuffer.allocateDirect(this.size); - data.putLong(0, this.getId()); + data.putInt(0, this.getId()); } } } http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnheapChunk.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnheapChunk.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnheapChunk.java index da34e24..38001ea 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnheapChunk.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnheapChunk.java @@ -39,7 +39,7 @@ public class OnheapChunk extends Chunk { void allocateDataBuffer() { if (data == null) { data = ByteBuffer.allocate(this.size); - data.putLong(0, this.getId()); + data.putInt(0, this.getId()); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java index 41b304b..3acb48b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java @@ -140,8 +140,8 @@ public class TestDefaultMemStore { // make sure chunk size increased even when writing the same cell, if using MSLAB if (msLab instanceof MemStoreLABImpl) { // since we add the chunkID at the 0th offset of the chunk and the - // chunkid is a long we need to account for those 8 bytes - assertEquals(2 * Segment.getCellLength(kv) + Bytes.SIZEOF_LONG, + // chunkid is an int we need to account for those 4 bytes + assertEquals(2 * Segment.getCellLength(kv) + Bytes.SIZEOF_INT, ((MemStoreLABImpl) msLab).getCurrentChunk().getNextFreeOffset()); } } else { http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java index 1768801..aedb905 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java @@ -90,7 +90,7 @@ public class TestMemStoreChunkPool { int size = KeyValueUtil.length(kv); ByteBufferKeyValue newKv = (ByteBufferKeyValue) mslab.copyCellInto(kv); if (newKv.getBuffer() != lastBuffer) { - expectedOff = 8; + expectedOff = 4; lastBuffer = newKv.getBuffer(); } assertEquals(expectedOff, newKv.getOffset()); http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java index 63e63ea..7def2a7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java @@ -76,7 +76,7 @@ public class TestMemStoreLAB { MemStoreLAB mslab = new MemStoreLABImpl(); int expectedOff = 0; ByteBuffer lastBuffer = null; - long lastChunkId = -1; + int lastChunkId = -1; // 100K iterations by 0-1K alloc -> 50MB expected // should be reasonable for unit test and also cover wraparound // behavior @@ -87,10 +87,10 @@ public class TestMemStoreLAB { ByteBufferKeyValue newKv = (ByteBufferKeyValue) mslab.copyCellInto(kv); if (newKv.getBuffer() != lastBuffer) { // since we add the chunkID at the 0th offset of the chunk and the - // chunkid is a long we need to account for those 8 bytes - expectedOff = Bytes.SIZEOF_LONG; + // chunkid is an int we need to account for those 4 bytes + expectedOff = Bytes.SIZEOF_INT; lastBuffer = newKv.getBuffer(); - long chunkId = newKv.getBuffer().getLong(0); + int chunkId = newKv.getBuffer().getInt(0); assertTrue("chunkid should be different", chunkId != lastChunkId); lastChunkId = chunkId; } @@ -172,8 +172,8 @@ public class TestMemStoreLAB { // Now check each byte array to make sure allocations don't overlap for (Map<Integer, AllocRecord> allocsInChunk : mapsByChunk.values()) { // since we add the chunkID at the 0th offset of the chunk and the - // chunkid is a long we need to account for those 8 bytes - int expectedOff = Bytes.SIZEOF_LONG; + // chunkid is an int we need to account for those 4 bytes + int expectedOff = Bytes.SIZEOF_INT; for (AllocRecord alloc : allocsInChunk.values()) { assertEquals(expectedOff, alloc.offset); assertTrue("Allocation overruns buffer", http://git-wip-us.apache.org/repos/asf/hbase/blob/b401a35f/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java index 1af98e9..96be8ec 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java @@ -66,7 +66,7 @@ public class TestMemstoreLABWithoutPool { MemStoreLAB mslab = new MemStoreLABImpl(); int expectedOff = 0; ByteBuffer lastBuffer = null; - long lastChunkId = -1; + int lastChunkId = -1; // 100K iterations by 0-1K alloc -> 50MB expected // should be reasonable for unit test and also cover wraparound // behavior @@ -77,10 +77,10 @@ public class TestMemstoreLABWithoutPool { ByteBufferKeyValue newKv = (ByteBufferKeyValue) mslab.copyCellInto(kv); if (newKv.getBuffer() != lastBuffer) { // since we add the chunkID at the 0th offset of the chunk and the - // chunkid is a long we need to account for those 8 bytes - expectedOff = Bytes.SIZEOF_LONG; + // chunkid is an int we need to account for those 4 bytes + expectedOff = Bytes.SIZEOF_INT; lastBuffer = newKv.getBuffer(); - long chunkId = newKv.getBuffer().getLong(0); + int chunkId = newKv.getBuffer().getInt(0); assertTrue("chunkid should be different", chunkId != lastChunkId); lastChunkId = chunkId; }