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

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


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new 36d93f17117 Pipe: make exception message more friendly when creating 
data sync pipe failed (#14208) (#14214)
36d93f17117 is described below

commit 36d93f171175a734a51322f22f24a3cf03edc42b
Author: nanxiang xia <[email protected]>
AuthorDate: Thu Nov 28 10:34:31 2024 +0800

    Pipe: make exception message more friendly when creating data sync pipe 
failed (#14208) (#14214)
    
    Co-authored-by: Steve Yurong Su <[email protected]>
---
 .../connector/client/IoTDBSyncClientManager.java   | 25 +++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
index 022e4fc7b53..9ad0eedcf1d 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
@@ -57,6 +57,7 @@ public abstract class IoTDBSyncClientManager extends 
IoTDBClientManager implemen
 
   protected final Map<TEndPoint, Pair<IoTDBSyncClient, Boolean>> 
endPoint2ClientAndStatus =
       new ConcurrentHashMap<>();
+  private final Map<TEndPoint, String> endPoint2HandshakeErrorMessage = new 
ConcurrentHashMap<>();
 
   private final LoadBalancer loadBalancer;
 
@@ -122,12 +123,27 @@ public abstract class IoTDBSyncClientManager extends 
IoTDBClientManager implemen
         return;
       }
     }
-    throw new PipeConnectionException(
-        String.format(
-            "All target servers %s are not available.", 
endPoint2ClientAndStatus.keySet()));
+    final StringBuilder errorMessage =
+        new StringBuilder(
+            String.format(
+                "All target servers %s are not available.", 
endPoint2ClientAndStatus.keySet()));
+    for (final Map.Entry<TEndPoint, String> entry : 
endPoint2HandshakeErrorMessage.entrySet()) {
+      errorMessage
+          .append(" (")
+          .append(" host: ")
+          .append(entry.getKey().getIp())
+          .append(", port: ")
+          .append(entry.getKey().getPort())
+          .append(", because: ")
+          .append(entry.getValue())
+          .append(")");
+    }
+    throw new PipeConnectionException(errorMessage.toString());
   }
 
   protected void reconstructClient(TEndPoint endPoint) {
+    endPoint2HandshakeErrorMessage.remove(endPoint);
+
     final Pair<IoTDBSyncClient, Boolean> clientAndStatus = 
endPoint2ClientAndStatus.get(endPoint);
 
     if (clientAndStatus.getLeft() != null) {
@@ -162,6 +178,7 @@ public abstract class IoTDBSyncClientManager extends 
IoTDBClientManager implemen
               trustStorePath,
               trustStorePwd));
     } catch (Exception e) {
+      endPoint2HandshakeErrorMessage.put(endPoint, e.getMessage());
       throw new PipeConnectionException(
           String.format(
               PipeConnectionException.CONNECTION_ERROR_FORMATTER,
@@ -208,6 +225,7 @@ public abstract class IoTDBSyncClientManager extends 
IoTDBClientManager implemen
             client.getIpAddress(),
             client.getPort(),
             resp.getStatus());
+        endPoint2HandshakeErrorMessage.put(client.getEndPoint(), 
resp.getStatus().getMessage());
       } else {
         clientAndStatus.setRight(true);
         client.setTimeout(CONNECTION_TIMEOUT_MS.get());
@@ -223,6 +241,7 @@ public abstract class IoTDBSyncClientManager extends 
IoTDBClientManager implemen
           client.getPort(),
           e.getMessage(),
           e);
+      endPoint2HandshakeErrorMessage.put(client.getEndPoint(), e.getMessage());
     }
   }
 

Reply via email to