Murtadha Hubail has submitted this change and it was merged. Change subject: [NO ISSUE][OTH] Extensible Error Reporting in QueryServiceServlet ......................................................................
[NO ISSUE][OTH] Extensible Error Reporting in QueryServiceServlet - user model changes: no - storage format changes: no - interface changes: yes Details: - Make error reporting extensible in QueryServiceServlet. - Introduce IFormattedException for exceptions with components and codes. Change-Id: Ide6ad3f255071224b0ea6dac5f0c07c52f3cdaa3 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2622 Sonar-Qube: Jenkins <[email protected]> Reviewed-by: Till Westmann <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java M hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java M hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java A hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/IFormattedException.java 4 files changed, 48 insertions(+), 3 deletions(-) Approvals: Anon. E. Moose #1000171: Till Westmann: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java index d22f657..dd03860 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java @@ -532,7 +532,7 @@ } catch (Exception | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError e) { handleExecuteStatementException(e, execution, param); response.setStatus(execution.getHttpStatus()); - ResultUtil.printError(sessionOutput.out(), e); + printError(sessionOutput.out(), e); ResultUtil.printStatus(sessionOutput, execution.getResultStatus()); } finally { // make sure that we stop buffering and return the result to the http response @@ -602,6 +602,10 @@ } } + protected void printError(PrintWriter sessionOut, Throwable throwable) { + ResultUtil.printError(sessionOut, throwable); + } + protected void printExecutionPlans(SessionOutput output, ExecutionPlans executionPlans) { final PrintWriter pw = output.out(); pw.print("\t\""); diff --git a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java index adb6c79..54292c3 100644 --- a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java +++ b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java @@ -21,9 +21,10 @@ import java.io.Serializable; import org.apache.hyracks.api.exceptions.ErrorCode; +import org.apache.hyracks.api.exceptions.IFormattedException; import org.apache.hyracks.api.util.ErrorMessageUtil; -public class AlgebricksException extends Exception { +public class AlgebricksException extends Exception implements IFormattedException { private static final long serialVersionUID = 1L; public static final int UNKNOWN = 0; @@ -93,10 +94,12 @@ return new AlgebricksException(ErrorCode.HYRACKS, errorCode, ErrorCode.getErrorMessage(errorCode), params); } + @Override public String getComponent() { return component; } + @Override public int getErrorCode() { return errorCode; } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java index 7aa84e2..2235752 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java @@ -23,7 +23,7 @@ import org.apache.hyracks.api.util.ErrorMessageUtil; -public class HyracksException extends IOException { +public class HyracksException extends IOException implements IFormattedException { private static final long serialVersionUID = 1L; public static final int UNKNOWN = 0; @@ -101,10 +101,12 @@ this(component, errorCode, message, cause, null, params); } + @Override public String getComponent() { return component; } + @Override public int getErrorCode() { return errorCode; } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/IFormattedException.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/IFormattedException.java new file mode 100644 index 0000000..994915f --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/IFormattedException.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.hyracks.api.exceptions; + +public interface IFormattedException { + + /** + * Gets the component of this {@link IFormattedException} + * + * @return the exception component + */ + String getComponent(); + + /** + * Gets the error code of this {@link IFormattedException} + * + * @return the error code + */ + int getErrorCode(); +} \ No newline at end of file -- To view, visit https://asterix-gerrit.ics.uci.edu/2622 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ide6ad3f255071224b0ea6dac5f0c07c52f3cdaa3 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
