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

jackietien 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 b1d3dc63c9e [IOTDB-6265] Construct SessionPool using empty nodeUrls 
should throw exception
b1d3dc63c9e is described below

commit b1d3dc63c9e248568929dc153803a927f4e337d4
Author: Jackie Tien <[email protected]>
AuthorDate: Tue Dec 12 13:54:28 2023 +0800

    [IOTDB-6265] Construct SessionPool using empty nodeUrls should throw 
exception
---
 .../src/main/java/org/apache/iotdb/session/Session.java      |  8 +++++++-
 .../main/java/org/apache/iotdb/session/pool/SessionPool.java |  8 +++++++-
 .../src/test/java/org/apache/iotdb/session/SessionTest.java  | 12 ++++++++++++
 .../apache/iotdb/session/pool/SessionPoolExceptionTest.java  | 12 ++++++++++++
 4 files changed, 38 insertions(+), 2 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 80de5ab3acf..63290421dd9 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
@@ -373,6 +373,9 @@ public class Session implements ISession {
       int thriftMaxFrameSize,
       boolean enableRedirection,
       Version version) {
+    if (nodeUrls.isEmpty()) {
+      throw new IllegalArgumentException("nodeUrls shouldn't be empty.");
+    }
     this.nodeUrls = nodeUrls;
     this.username = username;
     this.password = password;
@@ -385,7 +388,10 @@ public class Session implements ISession {
   }
 
   public Session(Builder builder) {
-    if (builder.nodeUrls != null && builder.nodeUrls.size() > 0) {
+    if (builder.nodeUrls != null) {
+      if (builder.nodeUrls.isEmpty()) {
+        throw new IllegalArgumentException("nodeUrls shouldn't be empty.");
+      }
       this.nodeUrls = builder.nodeUrls;
       this.enableQueryRedirection = true;
     } else {
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
index 094da90a2d2..fa569c94e28 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
@@ -418,6 +418,9 @@ public class SessionPool implements ISessionPool {
     this.maxSize = maxSize;
     this.host = null;
     this.port = -1;
+    if (nodeUrls.isEmpty()) {
+      throw new IllegalArgumentException("nodeUrls shouldn't be empty.");
+    }
     this.nodeUrls = nodeUrls;
     this.user = user;
     this.password = password;
@@ -452,7 +455,10 @@ public class SessionPool implements ISessionPool {
     this.version = builder.version;
     this.thriftDefaultBufferSize = builder.thriftDefaultBufferSize;
     this.thriftMaxFrameSize = builder.thriftMaxFrameSize;
-    if (builder.nodeUrls != null && builder.nodeUrls.size() > 0) {
+    if (builder.nodeUrls != null) {
+      if (builder.nodeUrls.isEmpty()) {
+        throw new IllegalArgumentException("nodeUrls shouldn't be empty.");
+      }
       this.nodeUrls = builder.nodeUrls;
       this.host = null;
       this.port = -1;
diff --git 
a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java 
b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
index 49713d91269..14085e9fe69 100644
--- 
a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
+++ 
b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
@@ -49,11 +49,13 @@ import java.io.IOException;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 
 public class SessionTest {
@@ -1180,4 +1182,14 @@ public class SessionTest {
       throws IoTDBConnectionException, StatementExecutionException {
     session.getBackupConfiguration();
   }
+
+  @Test
+  public void testEmptyNodeUrls() {
+    try {
+      ISession failedSession = new Session(Collections.emptyList(), "root", 
"root");
+      fail();
+    } catch (IllegalArgumentException e) {
+      assertEquals("nodeUrls shouldn't be empty.", e.getMessage());
+    }
+  }
 }
diff --git 
a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
 
b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
index e9ea2882b1c..8e6a16c12e9 100644
--- 
a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
+++ 
b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
@@ -43,6 +43,7 @@ import org.powermock.reflect.Whitebox;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,6 +51,7 @@ import java.util.concurrent.ConcurrentLinkedDeque;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyList;
@@ -263,4 +265,14 @@ public class SessionPoolExceptionTest {
       assertTrue(e instanceof IoTDBConnectionException);
     }
   }
+
+  @Test
+  public void testEmptyNodeUrls() {
+    try {
+      ISessionPool failedSession = new SessionPool(Collections.emptyList(), 
"root", "root", 1);
+      fail();
+    } catch (IllegalArgumentException e) {
+      assertEquals("nodeUrls shouldn't be empty.", e.getMessage());
+    }
+  }
 }

Reply via email to