From 727c1c10250fce242ca35bc9b7393b87ae37d336 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 22 Sep 2011 09:33:04 -0700 Subject: [PATCH 1/2] + remove unused import. --- .../http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java b/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java index 592af17ad7..ff95bfb2b5 100644 --- a/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java +++ b/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java @@ -96,7 +96,6 @@ import java.io.UnsupportedEncodingException; import java.net.InetSocketAddress; import java.net.URI; -import java.net.URL; import java.net.URLEncoder; import java.nio.ByteBuffer; import java.security.NoSuchAlgorithmException; From efe60cbfbc6906503770942bde39dd0b6f86d958 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Tue, 27 Sep 2011 15:21:59 -0700 Subject: [PATCH 2/2] [perf] Do not call .size() on the ConcurrentLinkedQueue. Instead, track the connection count ourselves. --- .../client/providers/grizzly/GrizzlyConnectionsPool.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyConnectionsPool.java b/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyConnectionsPool.java index f6649035f1..bb0fcc9659 100644 --- a/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyConnectionsPool.java +++ b/src/main/java/com/ning/http/client/providers/grizzly/GrizzlyConnectionsPool.java @@ -360,6 +360,7 @@ final class IdleConnectionQueue { final TimeoutResolver resolver = new TimeoutResolver(); final long timeout; + final AtomicInteger count = new AtomicInteger(0); // ---------------------------------------------------- Constructors @@ -377,9 +378,11 @@ void offer(final Connection c) { resolver.setTimeoutMs(c, System.currentTimeMillis() + timeout); } queue.offer(c); + count.incrementAndGet(); } Connection poll() { + count.decrementAndGet(); return queue.poll(); } @@ -388,15 +391,16 @@ boolean remove(final Connection c) { resolver.removeTimeout(c); } + count.decrementAndGet(); return queue.remove(c); } int size() { - return queue.size(); + return count.get(); } boolean isEmpty() { - return queue.isEmpty(); + return (count.get() == 0); } void destroy() {