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

qiaojialin pushed a commit to branch fix_checkTimeseries
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 68b27cdb8f5ae482f2280400d225c834ed5a726c
Author: qiaojialin <[email protected]>
AuthorDate: Fri May 22 16:53:17 2020 +0800

    fix checkTimeseries exception
---
 .../src/main/java/org/apache/iotdb/SessionExample.java      |  2 +-
 session/src/main/java/org/apache/iotdb/session/Session.java | 13 ++++++-------
 .../java/org/apache/iotdb/session/pool/SessionPool.java     |  6 +++++-
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/example/session/src/main/java/org/apache/iotdb/SessionExample.java 
b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
index 13b2bb0..d28faf6 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
@@ -93,7 +93,7 @@ public class SessionExample {
   }
 
   private static void createMultiTimeseries()
-      throws IoTDBConnectionException, BatchExecutionException {
+      throws IoTDBConnectionException, BatchExecutionException, 
StatementExecutionException {
 
     if (!session.checkTimeseriesExists("root.sg1.d2.s1") && !session
         .checkTimeseriesExists("root.sg1.d2.s2")) {
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java 
b/session/src/main/java/org/apache/iotdb/session/Session.java
index e3bc1ae..b574c9f 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -594,13 +594,12 @@ public class Session {
     }
   }
 
-  public boolean checkTimeseriesExists(String path) throws 
IoTDBConnectionException {
-    try {
-      return executeQueryStatement(String.format("SHOW TIMESERIES %s", 
path)).hasNext();
-    } catch (Exception e) {
-      logger.error("meet error when check Timeseries {}", path, e);
-      throw new IoTDBConnectionException(e);
-    }
+  public boolean checkTimeseriesExists(String path)
+      throws IoTDBConnectionException, StatementExecutionException {
+    SessionDataSet dataSet = executeQueryStatement(String.format("SHOW 
TIMESERIES %s", path));
+    boolean result = dataSet.hasNext();
+    dataSet.closeOperationHandle();
+    return result;
   }
 
   private synchronized String getTimeZone()
diff --git 
a/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java 
b/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
index 4478307..17135fb 100644
--- a/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
+++ b/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
@@ -647,7 +647,8 @@ public class SessionPool {
     }
   }
 
-  public boolean checkTimeseriesExists(String path) throws 
IoTDBConnectionException {
+  public boolean checkTimeseriesExists(String path)
+      throws IoTDBConnectionException, StatementExecutionException {
     for (int i = 0; i < RETRY; i++) {
       Session session = getSession();
       try {
@@ -657,6 +658,9 @@ public class SessionPool {
       } catch (IoTDBConnectionException e) {
         // TException means the connection is broken, remove it and get a new 
one.
         cleanSessionAndMayThrowConnectionException(session, i, e);
+      } catch (StatementExecutionException e) {
+        putBack(session);
+        throw e;
       }
     }
     //never go here.

Reply via email to