async-http-client icon indicating copy to clipboard operation
async-http-client copied to clipboard

use promise mode,MaxConnectionSemaphore do not relase lock until channel close.

Open zxspopo opened this issue 1 year ago • 2 comments

hi,when i use this code , i found MaxConnectionSemaphore don`t release,cause TooManyConnection 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));
      }
    }

zxspopo avatar Jan 19 '24 01:01 zxspopo

Version?

hyperxpro avatar Jan 19 '24 06:01 hyperxpro

@hyperxpro 2.12.3 tks

zxspopo avatar Jan 19 '24 08:01 zxspopo