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

morningman pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-doris-spark-connector.git

commit 817c819f5af8c12121362521114ff4feaca5b3cc
Author: Youngwb <yangwenbo_mail...@163.com>
AuthorDate: Mon Dec 30 21:58:13 2019 +0800

    Spark return error to users when spark on doris query failed (#2531)
---
 .../org/apache/doris/spark/backend/BackendClient.java    | 13 +++++++++++--
 .../DorisInternalException.java}                         | 16 ++++++++++------
 .../java/org/apache/doris/spark/util/ErrorMessages.java  |  1 +
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/apache/doris/spark/backend/BackendClient.java 
b/src/main/java/org/apache/doris/spark/backend/BackendClient.java
index 62d6398..90baf79 100644
--- a/src/main/java/org/apache/doris/spark/backend/BackendClient.java
+++ b/src/main/java/org/apache/doris/spark/backend/BackendClient.java
@@ -19,6 +19,8 @@ package org.apache.doris.spark.backend;
 
 import org.apache.doris.spark.cfg.ConfigurationOptions;
 import org.apache.doris.spark.exception.ConnectedFailedException;
+import org.apache.doris.spark.exception.DorisException;
+import org.apache.doris.spark.exception.DorisInternalException;
 import org.apache.doris.spark.util.ErrorMessages;
 import org.apache.doris.spark.cfg.Settings;
 import org.apache.doris.spark.serialization.Routing;
@@ -151,16 +153,17 @@ public class BackendClient {
      * @return scan batch result
      * @throws ConnectedFailedException throw if cannot connect to Doris BE
      */
-    public TScanBatchResult getNext(TScanNextBatchParams nextBatchParams) 
throws ConnectedFailedException {
+    public TScanBatchResult getNext(TScanNextBatchParams nextBatchParams) 
throws DorisException {
         logger.debug("GetNext to '{}', parameter is '{}'.", routing, 
nextBatchParams);
         if (!isConnected) {
             open();
         }
         TException ex = null;
+        TScanBatchResult result = null;
         for (int attempt = 0; attempt < retries; ++attempt) {
             logger.debug("Attempt {} to getNext {}.", attempt, routing);
             try {
-                TScanBatchResult result  = client.get_next(nextBatchParams);
+                result  = client.get_next(nextBatchParams);
                 if (result == null) {
                     logger.warn("GetNext result from {} is null.", routing);
                     continue;
@@ -176,6 +179,12 @@ public class BackendClient {
                 ex = e;
             }
         }
+        if (result != null && (TStatusCode.OK != 
(result.getStatus().getStatus_code()))) {
+            logger.error(ErrorMessages.DORIS_INTERNAL_FAIL_MESSAGE, routing, 
result.getStatus().getStatus_code(),
+                    result.getStatus().getError_msgs());
+            throw new DorisInternalException(routing.toString(), 
result.getStatus().getStatus_code(),
+                    result.getStatus().getError_msgs());
+        }
         logger.error(ErrorMessages.CONNECT_FAILED_MESSAGE, routing);
         throw new ConnectedFailedException(routing.toString(), ex);
     }
diff --git a/src/main/java/org/apache/doris/spark/util/ErrorMessages.java 
b/src/main/java/org/apache/doris/spark/exception/DorisInternalException.java
similarity index 63%
copy from src/main/java/org/apache/doris/spark/util/ErrorMessages.java
copy to 
src/main/java/org/apache/doris/spark/exception/DorisInternalException.java
index aff289d..f42acee 100644
--- a/src/main/java/org/apache/doris/spark/util/ErrorMessages.java
+++ b/src/main/java/org/apache/doris/spark/exception/DorisInternalException.java
@@ -15,11 +15,15 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package org.apache.doris.spark.util;
+package org.apache.doris.spark.exception;
+
+import org.apache.doris.thrift.TStatusCode;
+
+import java.util.List;
+
+public class DorisInternalException extends DorisException {
+    public DorisInternalException(String server, TStatusCode statusCode, 
List<String> errorMsgs) {
+        super("Doris server " + server + " internal failed, status code [" + 
statusCode + "] error message is " + errorMsgs);
+    }
 
-public abstract class ErrorMessages {
-    public static final String PARSE_NUMBER_FAILED_MESSAGE = "Parse '{}' to 
number failed. Original string is '{}'.";
-    public static final String CONNECT_FAILED_MESSAGE = "Connect to doris {} 
failed.";
-    public static final String ILLEGAL_ARGUMENT_MESSAGE = "argument '{}' is 
illegal, value is '{}'.";
-    public static final String SHOULD_NOT_HAPPEN_MESSAGE = "Should not come 
here.";
 }
diff --git a/src/main/java/org/apache/doris/spark/util/ErrorMessages.java 
b/src/main/java/org/apache/doris/spark/util/ErrorMessages.java
index aff289d..92a04e9 100644
--- a/src/main/java/org/apache/doris/spark/util/ErrorMessages.java
+++ b/src/main/java/org/apache/doris/spark/util/ErrorMessages.java
@@ -22,4 +22,5 @@ public abstract class ErrorMessages {
     public static final String CONNECT_FAILED_MESSAGE = "Connect to doris {} 
failed.";
     public static final String ILLEGAL_ARGUMENT_MESSAGE = "argument '{}' is 
illegal, value is '{}'.";
     public static final String SHOULD_NOT_HAPPEN_MESSAGE = "Should not come 
here.";
+    public static final String DORIS_INTERNAL_FAIL_MESSAGE = "Doris server 
'{}' internal failed, status is '{}', error message is '{}'";
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to