From 198a52b2f37af3fa83da9f5937f3cdc2d3f57342 Mon Sep 17 00:00:00 2001 From: Stas Gromov Date: Fri, 20 Feb 2015 19:09:56 +0300 Subject: [PATCH] fix releasing limit for connections pool per host --- .../client/providers/netty/channel/ChannelManager.java | 9 ++++++--- .../providers/netty/request/NettyConnectListener.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ning/http/client/providers/netty/channel/ChannelManager.java b/src/main/java/com/ning/http/client/providers/netty/channel/ChannelManager.java index 8409def239..23c0ea4843 100644 --- a/src/main/java/com/ning/http/client/providers/netty/channel/ChannelManager.java +++ b/src/main/java/com/ning/http/client/providers/netty/channel/ChannelManager.java @@ -155,8 +155,8 @@ public boolean remove(Object o) { } if (maxConnectionsPerHostEnabled) { - freeChannelsPerHost = new ConcurrentHashMap(); - channelId2KeyPool = new ConcurrentHashMap(); + freeChannelsPerHost = new ConcurrentHashMap<>(); + channelId2KeyPool = new ConcurrentHashMap<>(); } else { freeChannelsPerHost = null; channelId2KeyPool = null; @@ -381,8 +381,11 @@ public void abortChannelPreemption(String poolKey) { getFreeConnectionsForHost(poolKey).release(); } - public void registerOpenChannel(Channel channel) { + public void registerOpenChannel(Channel channel, final String poolKey) { openChannels.add(channel); + if (maxConnectionsPerHostEnabled) { + channelId2KeyPool.put(channel.getId(), poolKey); + } } private HttpClientCodec newHttpClientCodec() { diff --git a/src/main/java/com/ning/http/client/providers/netty/request/NettyConnectListener.java b/src/main/java/com/ning/http/client/providers/netty/request/NettyConnectListener.java index c4cea57604..80d1280861 100644 --- a/src/main/java/com/ning/http/client/providers/netty/request/NettyConnectListener.java +++ b/src/main/java/com/ning/http/client/providers/netty/request/NettyConnectListener.java @@ -74,7 +74,7 @@ private void writeRequest(Channel channel, String poolKey) { if (future.getAsyncHandler() instanceof AsyncHandlerExtensions) AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onConnectionOpen(); - channelManager.registerOpenChannel(channel); + channelManager.registerOpenChannel(channel, poolKey); future.attachChannel(channel, false); requestSender.writeRequest(future, channel); }