- 
                Notifications
    You must be signed in to change notification settings 
- Fork 1.6k
Open
Description
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));
      }
    }
Metadata
Metadata
Assignees
Labels
No labels