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

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

commit bc1b93340de0b5cc59f4c1e72477788c62f58be2
Author: JackieTien97 <[email protected]>
AuthorDate: Wed Jun 18 15:17:42 2025 +0800

    Fix thread leak in session while connected DN is down
---
 .../session/src/main/java/org/apache/iotdb/session/Session.java    | 6 +++---
 .../main/java/org/apache/iotdb/session/TableSessionBuilder.java    | 7 ++++++-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index 95f6e2df65e..dc54d5fd772 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -627,10 +627,10 @@ public class Session implements ISession {
 
   @Override
   public synchronized void close() throws IoTDBConnectionException {
-    if (isClosed) {
-      return;
-    }
     try {
+      if (isClosed) {
+        return;
+      }
       if (enableRedirection) {
         for (SessionConnection sessionConnection : 
endPointToSessionConnection.values()) {
           sessionConnection.close();
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/TableSessionBuilder.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/TableSessionBuilder.java
index fd59846c6e6..a46de6562ea 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/TableSessionBuilder.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/TableSessionBuilder.java
@@ -271,7 +271,12 @@ public class TableSessionBuilder extends 
AbstractSessionBuilder {
     }
     this.sqlDialect = TABLE;
     Session newSession = new Session(this);
-    newSession.open(enableCompression, connectionTimeoutInMs);
+    try {
+      newSession.open(enableCompression, connectionTimeoutInMs);
+    } catch (IoTDBConnectionException e) {
+      newSession.close();
+      throw e;
+    }
     return new TableSession(newSession);
   }
 }

Reply via email to