private void initByteBuffToReadInto(int length) { // We create random on heap buffers are read into those when // 1. ByteBufferPool is not there. // 2. When the size of the req is very small. Using a large sized (64 KB) buffer from pool is // waste then. Also if all the reqs are of this size, we will be creating larger sized // buffers and pool them permanently. This include Scan/Get request and DDL kind of reqs like // RegionOpen. // 3. If it is an initial handshake signal or initial connection request. Any way then // condition 2 itself will match // 4. When SASL use is ON. if (this.rpcServer.reservoir == null || skipInitialSaslHandshake || !connectionHeaderRead || useSasl || length < this.rpcServer.minSizeForReservoirUse) { this.data = new SingleByteBuff(ByteBuffer.allocate(length)); } else { Pair<ByteBuff, CallCleanup> pair = RpcServer.allocateByteBuffToReadInto( this.rpcServer.reservoir, this.rpcServer.minSizeForReservoirUse, length); this.data = pair.getFirst(); this.callCleanup = pair.getSecond(); } }
pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 200); buff = pair.getFirst(); assertNull(pair.getSecond()); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 7 * 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 6 * 1024 + 200); buff = pair.getFirst(); buffers[i] = pool.getBuffer(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 20 * 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 7 * 1024); buff = pair.getFirst();
pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 200); buff = pair.getFirst(); assertNull(pair.getSecond()); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 7 * 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 6 * 1024 + 200); buff = pair.getFirst(); buffers[i] = pool.getBuffer(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 20 * 1024); buff = pair.getFirst(); pair = RpcServer.allocateByteBuffToReadInto(pool, RpcServer.getMinSizeForReservoirUse(pool), 7 * 1024); buff = pair.getFirst();