From 5c20c42e2bd82f888e9a7c1a2f35c2b209f78c7c Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Wed, 30 Jun 2021 15:50:06 +1000 Subject: [PATCH] Issue #6470 - remove ByteBufferPool usage from MessageInputStream Signed-off-by: Lachlan Roberts --- .../common/message/MessageInputStream.java | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageInputStream.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageInputStream.java index cfbc822e090..282c739c8bc 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageInputStream.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageInputStream.java @@ -25,14 +25,11 @@ import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; -import org.eclipse.jetty.io.ByteBufferPool; -import org.eclipse.jetty.io.NullByteBufferPool; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.SuspendToken; -import org.eclipse.jetty.websocket.common.WebSocketSession; /** * Support class for reading a (single) WebSocket BINARY message via a InputStream. @@ -45,7 +42,6 @@ public class MessageInputStream extends InputStream implements MessageAppender private static final ByteBuffer EOF = ByteBuffer.allocate(0).asReadOnlyBuffer(); private final Session session; - private final ByteBufferPool bufferPool; private final BlockingDeque buffers = new LinkedBlockingDeque<>(); private final long timeoutMs; private ByteBuffer activeBuffer = null; @@ -84,7 +80,6 @@ public MessageInputStream(Session session, int timeoutMs) { this.timeoutMs = timeoutMs; this.session = session; - this.bufferPool = (session instanceof WebSocketSession) ? ((WebSocketSession)session).getBufferPool() : new NullByteBufferPool(); } @Override @@ -156,16 +151,6 @@ public void close() if (remainingContent) LOG.warn("MessageInputStream closed without fully consuming content {}", session); - - // Release any buffers taken from the pool. - if (activeBuffer != null && activeBuffer != EOF) - bufferPool.release(activeBuffer); - - for (ByteBuffer buffer : buffers) - { - bufferPool.release(buffer); - } - activeBuffer = null; buffers.clear(); state = State.CLOSED; @@ -258,8 +243,6 @@ public int read(byte[] b, int off, int len) throws IOException SuspendToken resume = null; synchronized (this) { - // Release buffer back to pool. - bufferPool.release(activeBuffer); activeBuffer = null; switch (state) @@ -325,6 +308,9 @@ public boolean markSupported() private ByteBuffer acquire(int capacity, boolean direct) { - return bufferPool.acquire(capacity, direct); + if (direct) + return BufferUtil.allocateDirect(capacity); + else + return BufferUtil.allocate(capacity); } }