drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "abdelhakim deneche" <adene...@gmail.com>
Subject Re: Review Request 32987: DRILL-2675: Implement a subset of User Exceptions to improve how errors are reported to the user
Date Wed, 08 Apr 2015 20:30:29 GMT

This is an automatically generated e-mail. To reply, visit:


    I should move this to DrillUserException and pass the ErrorType in it's constructor.


    same as above.


    I can remove this, it's already done in super.newPBErrorBuilder().
    Until DrillParseException has specific context information, we can remove newPBErrorBuilder()
from DrillParseException


    The sole purpose of this class is to wrap a DrillPBError so it can be passed around, and
thrown if necessary. It replaces RemoteRpcException.
    This class should extend DrillUserException instead of DrillSystemException


    This class represents any internal Drill exception sent to the client. It should not display
any error message except from a generic "system exception" along with the error_id and the
drillbit identity.


    This method is called whenever a class wants to log or store an exception that will be
sent to the client. Foreman, FragmentContext and FragmentExecutor are examples of such classes.
    This method makes sure user exception are not lost when wrapped inside other exceptions.
    Any exception that is not a user exception is considered to be a system exception (this
will most likely make most of Drill error messages disappear behind "system exception" until
those messages are properly fixed)

- abdelhakim deneche

On April 8, 2015, 8:04 p.m., abdelhakim deneche wrote:
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/32987/
> -----------------------------------------------------------
> (Updated April 8, 2015, 8:04 p.m.)
> Review request for drill and Jacques Nadeau.
> Bugs: DRILL-2675
>     https://issues.apache.org/jira/browse/DRILL-2675
> Repository: drill-git
> Description
> -------
> **INITIAL PATCH** with a working solution. This patch cleans the path for errors, especially
user errors with meaningful messages, to be propagated properly to the client. 
> The patch includes changes to 2 existing use cases where the error message was successfully
> The general idea is: if a code wants to throw an exception that contains a meaningful
error message, it throws a DrillUserException. The propagation code will make sure this exception
is propagated to the client. The user exception object doesn't contain the final error message,
but enough information about the error, the client will use this information to display a
better error message.
> Any exception that is not a DrillUserException (or one of it's subclasses) will be considered
as a system exception. For those exceptions the client will only display the error id and
drillbit identity in case the user wants to check the logs for more informations about the
> Error objects sent to the client will still contain a stack trace that can be used to
display more information if the client has enabled the error verbose mode.
> Diffs
> -----
>   common/src/main/java/org/apache/drill/common/exceptions/DrillDataReadException.java
>   common/src/main/java/org/apache/drill/common/exceptions/DrillParseException.java PRE-CREATION

>   common/src/main/java/org/apache/drill/common/exceptions/DrillRemoteException.java PRE-CREATION

>   common/src/main/java/org/apache/drill/common/exceptions/DrillSystemException.java PRE-CREATION

>   common/src/main/java/org/apache/drill/common/exceptions/DrillUserException.java PRE-CREATION

>   common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java PRE-CREATION

>   exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java 18b93e9

>   exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/broadcastsender/BroadcastSenderRootExec.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/StatusHandler.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/rpc/CoordinationQueue.java 0016d6a

>   exec/java-exec/src/main/java/org/apache/drill/exec/rpc/RemoteRpcException.java 14ea873

>   exec/java-exec/src/main/java/org/apache/drill/exec/rpc/RpcBus.java b974963 
>   exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/QueryResultHandler.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/work/ErrorHelper.java 0773d6c 
>   exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java 23ef0d3

>   exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java 8626d5b

>   exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/AbstractStatusReporter.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java
>   exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/StatusReporter.java
>   protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java f72d5e1

>   protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java 9a9d196 
>   protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java ac9cef5

>   protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryResult.java 474e330 
>   protocol/src/main/protobuf/UserBitShared.proto 5e44655 
> Diff: https://reviews.apache.org/r/32987/diff/
> Testing
> -------
> Thanks,
> abdelhakim deneche

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message