- Notifications
You must be signed in to change notification settings - Fork1.6k
Open
Description
hi,when i use this code , i found MaxConnectionSemaphore don`t release,causeTooManyConnection Excetion.
DefaultAsyncHttpClientConfig config = new DefaultAsyncHttpClientConfig.Builder().setConnectTimeout(60000) .setReadTimeout(60000).setRequestTimeout(60000).setMaxConnections(200).setMaxRequestRetry(3).setAcquireFreeChannelTimeout(60000).build(); AsyncHttpClient asyncHttpClient = Dsl.asyncHttpClient(config);while (true) { String requestUrl ="http://xxx:8080/hello?name=san"; CompletableFuture<Response> future = asyncHttpClient.prepareGet(requestUrl).execute(new HttpCompletionHandler()).toCompletableFuture(); future.whenComplete((response, throwable) -> { if (throwable == null) { // System.out.println(response.getResponseBody()); } else { if (throwable instanceof TimeoutException) { System.err.println(throwable.getMessage()); } else { // 请求失败 throwable.printStackTrace(); } } }); // }); }change code like this maybe resolve this problem, is it correct?
NettyConnectListener.java
public void onSuccess(Channel channel, InetSocketAddress remoteAddress) { if (connectionSemaphore != null) { // transfer lock from future to channel **//Object partitionKeyLock = future.takePartitionKeyLock(); //change this code Object partitionKeyLock = future.getPartitionKey();** if (partitionKeyLock != null) { channel.closeFuture().addListener(future -> connectionSemaphore.releaseChannelLock(partitionKeyLock)); } }Metadata
Metadata
Assignees
Labels
No labels