HBASE-16613 Return the unused ByteBuffer to BoundedByteBufferPool when no cell is retrieved from the CellScanner (ChiaPing Tsai)
This commit is contained in:
parent
059a169d3a
commit
8e25ea536a
|
@ -122,8 +122,9 @@ public class IPCUtil {
|
||||||
if (codec == null) throw new CellScannerButNoCodecException();
|
if (codec == null) throw new CellScannerButNoCodecException();
|
||||||
int bufferSize = this.cellBlockBuildingInitialBufferSize;
|
int bufferSize = this.cellBlockBuildingInitialBufferSize;
|
||||||
ByteBufferOutputStream baos = null;
|
ByteBufferOutputStream baos = null;
|
||||||
|
ByteBuffer bb = null;
|
||||||
if (pool != null) {
|
if (pool != null) {
|
||||||
ByteBuffer bb = pool.getBuffer();
|
bb = pool.getBuffer();
|
||||||
bufferSize = bb.capacity();
|
bufferSize = bb.capacity();
|
||||||
baos = new ByteBufferOutputStream(bb);
|
baos = new ByteBufferOutputStream(bb);
|
||||||
} else {
|
} else {
|
||||||
|
@ -155,7 +156,12 @@ public class IPCUtil {
|
||||||
encoder.flush();
|
encoder.flush();
|
||||||
// If no cells, don't mess around. Just return null (could be a bunch of existence checking
|
// If no cells, don't mess around. Just return null (could be a bunch of existence checking
|
||||||
// gets or something -- stuff that does not return a cell).
|
// gets or something -- stuff that does not return a cell).
|
||||||
if (count == 0) return null;
|
if (count == 0) {
|
||||||
|
if (pool != null && bb != null) {
|
||||||
|
pool.putBuffer(bb);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
} catch (BufferOverflowException e) {
|
} catch (BufferOverflowException e) {
|
||||||
throw new DoNotRetryIOException(e);
|
throw new DoNotRetryIOException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
Loading…
Reference in New Issue