This is an automated email from the ASF dual-hosted git repository.

rong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new bc2cc044c91 Pipe: Fix asynchronous connector manager leak when the 
receiverAttributes exists on constructing (#13501)
bc2cc044c91 is described below

commit bc2cc044c918a084e564c25ed43fdcc6bd2f11c7
Author: YC27 <[email protected]>
AuthorDate: Fri Sep 13 10:53:59 2024 +0800

    Pipe: Fix asynchronous connector manager leak when the receiverAttributes 
exists on constructing (#13501)
---
 .../connector/client/IoTDBDataNodeAsyncClientManager.java    | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeAsyncClientManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeAsyncClientManager.java
index 391545b7419..549923882d5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeAsyncClientManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeAsyncClientManager.java
@@ -89,11 +89,13 @@ public class IoTDBDataNodeAsyncClientManager extends 
IoTDBClientManager
     receiverAttributes =
         String.format("%s-%s", shouldReceiverConvertOnTypeMismatch, 
loadTsFileStrategy);
     synchronized (IoTDBDataNodeAsyncClientManager.class) {
-      ASYNC_PIPE_DATA_TRANSFER_CLIENT_MANAGER_HOLDER.putIfAbsent(
-          receiverAttributes,
-          new IClientManager.Factory<TEndPoint, 
AsyncPipeDataTransferServiceClient>()
-              .createClientManager(
-                  new 
ClientPoolFactory.AsyncPipeDataTransferServiceClientPoolFactory()));
+      if 
(!ASYNC_PIPE_DATA_TRANSFER_CLIENT_MANAGER_HOLDER.containsKey(receiverAttributes))
 {
+        ASYNC_PIPE_DATA_TRANSFER_CLIENT_MANAGER_HOLDER.putIfAbsent(
+            receiverAttributes,
+            new IClientManager.Factory<TEndPoint, 
AsyncPipeDataTransferServiceClient>()
+                .createClientManager(
+                    new 
ClientPoolFactory.AsyncPipeDataTransferServiceClientPoolFactory()));
+      }
       endPoint2Client = 
ASYNC_PIPE_DATA_TRANSFER_CLIENT_MANAGER_HOLDER.get(receiverAttributes);
 
       RECEIVER_ATTRIBUTES_REF_COUNT.compute(

Reply via email to