You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2019/11/16 11:43:33 UTC

[incubator-iotdb] 04/05: [IOTDB-300]reconnection to requestStmtId when broke pip (#543)

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

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

commit 143badd4a24bf2b2266d19b9c085acf84675a694
Author: Dawei Liu <13...@qq.com>
AuthorDate: Sat Nov 16 14:37:25 2019 +0800

    [IOTDB-300]reconnection to requestStmtId when broke pip (#543)
    
    (cherry picked from commit ef16fad43aff6e907539cf6a2ec76c6433b969ad)
---
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java | 36 ++++++++++++++--------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
index 481bcaf..ee7ded2 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
@@ -196,9 +196,7 @@ public class IoTDBStatement implements Statement {
     try {
       return executeSQL(sql);
     } catch (TException e) {
-      boolean flag = connection.reconnect();
-      reInit();
-      if (flag) {
+      if (reConnect()) {
         try {
           return executeSQL(sql);
         } catch (TException e2) {
@@ -337,9 +335,7 @@ public class IoTDBStatement implements Statement {
     try {
       return executeBatchSQL();
     } catch (TException e) {
-      boolean flag = connection.reconnect();
-      reInit();
-      if (flag) {
+      if (reConnect()) {
         try {
           return executeBatchSQL();
         } catch (TException e2) {
@@ -394,9 +390,7 @@ public class IoTDBStatement implements Statement {
     try {
       return executeQuerySQL(sql);
     } catch (TException e) {
-      boolean flag = connection.reconnect();
-      reInit();
-      if (flag) {
+      if (reConnect()) {
         try {
           return executeQuerySQL(sql);
         } catch (TException e2) {
@@ -434,9 +428,7 @@ public class IoTDBStatement implements Statement {
     try {
       return executeUpdateSQL(sql);
     } catch (TException e) {
-      boolean flag = connection.reconnect();
-      reInit();
-      if (flag) {
+      if (reConnect()) {
         try {
           return executeUpdateSQL(sql);
         } catch (TException e2) {
@@ -644,7 +636,25 @@ public class IoTDBStatement implements Statement {
     try {
       this.stmtId = client.requestStatementId();
     } catch (TException e) {
-      throw new SQLException("Cannot get id for statement", e);
+      if (reConnect()) {
+        try {
+          this.stmtId = client.requestStatementId();
+        } catch (TException e2) {
+          throw new SQLException(
+                  "Cannot get id for statement after reconnecting. please check server status",
+                  e2);
+        }
+      } else {
+        throw new SQLException(
+                "Cannot get id for statement after reconnecting. please check server status", e);
+      }
     }
   }
+
+
+  private boolean reConnect(){
+    boolean flag = connection.reconnect();
+    reInit();
+    return flag;
+  }
 }