From da2a3827fa90f4b1715eefb3daf706089d0a97e6 Mon Sep 17 00:00:00 2001 From: Ramkrishna Date: Thu, 15 Jan 2015 13:01:20 +0530 Subject: [PATCH] HBASE-12845 - ByteBufferOutputStream should grow as direct buffer if the initial buffer is also direct BB (Ram) --- .../apache/hadoop/hbase/io/ByteBufferOutputStream.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBufferOutputStream.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBufferOutputStream.java index 55a4aac52e8..257b850572d 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBufferOutputStream.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBufferOutputStream.java @@ -70,8 +70,12 @@ public class ByteBufferOutputStream extends OutputStream { int newSize = (int)Math.min((((long)buf.capacity()) * 2), (long)(Integer.MAX_VALUE)); newSize = Math.max(newSize, buf.position() + extra); - - ByteBuffer newBuf = ByteBuffer.allocate(newSize); + ByteBuffer newBuf = null; + if (buf.isDirect()) { + newBuf = ByteBuffer.allocateDirect(newSize); + } else { + newBuf = ByteBuffer.allocate(newSize); + } buf.flip(); newBuf.put(buf); buf = newBuf;