From 0ffc66eff53078f074bcb9f6ca83d030e068c93c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 1 Jun 2020 15:17:46 +0200 Subject: [PATCH] Fixes #4904 - WebsocketClient creates more connections than needed. Updates after review. Signed-off-by: Simone Bordet --- .../jetty/client/MultiplexConnectionPool.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java b/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java index df868749dba2..e65fc3e2259a 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java @@ -66,15 +66,23 @@ public Connection acquire() { int queuedRequests = destination.getQueuedRequestCount(); int maxMultiplex = getMaxMultiplex(); - int maxPending = queuedRequests / maxMultiplex; - if (maxPending * maxMultiplex != queuedRequests) - ++maxPending; + int maxPending = ceilDiv(queuedRequests, maxMultiplex); tryCreate(maxPending); connection = activate(); } return connection; } + /** + * @param a the dividend + * @param b the divisor + * @return the ceiling of the algebraic quotient + */ + private static int ceilDiv(int a, int b) + { + return (a + b - 1) / b; + } + protected void lock() { lock.lock();