> On April 8, 2015, 11:20 p.m., Parth Chandra wrote:
> > exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java,
> >  line 94
> > <https://reviews.apache.org/r/32987/diff/1/?file=921076#file921076line94>
> >
> >     It would help if we have a hierarchy of exception 'contexts' that we 
> > can use to build the message. For instance, in this code, JSONRecord reader 
> > will catch an exception thrown by JSONReader which in turn will have caught 
> > an exception thrown by SingleListWriter. The SingleListWriter has no idea 
> > of the file name, line number, etc that the erroneous data came from. 
> > JSONReader knows the line number and column but not the file name. 
> > JSONRecordReader knows the file name. If each level adds the information 
> > about the context, the DrillUserException created can construct a message 
> > that contains the error as well as the context (in this case the precise 
> > location) of where the error occurred.

DrillUserException exposes an addContext(String) that can be used to add more 
context to existing exceptions. One example of this being used is inside 
JsonRecordReader.handleAndRaise()


- abdelhakim


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/32987/#review79447
-----------------------------------------------------------


On April 9, 2015, 5:42 p.m., abdelhakim deneche wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/32987/
> -----------------------------------------------------------
> 
> (Updated April 9, 2015, 5:42 p.m.)
> 
> 
> Review request for drill, Jacques Nadeau, Jason Altekruse, and Parth Chandra.
> 
> 
> 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 improved.
> 
> 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.
> 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
>  PRE-CREATION 
>   
> 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/DrillUnsupportedOperationException.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
>  8038527 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/broadcastsender/BroadcastSenderRootExec.java
>  d17fdd4 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/StatusHandler.java
>  5e21878 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java
>  b98778d 
>   
> 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
>  a1be83b 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
>  cc7cb83 
>   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
>  1b0885d 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java
>  a7e6c46 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/StatusReporter.java
>  26b5d68 
>   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/protobuf/UserBitShared.proto 5e44655 
> 
> Diff: https://reviews.apache.org/r/32987/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> abdelhakim deneche
> 
>

Reply via email to