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