[ 
https://issues.apache.org/jira/browse/CALCITE-3386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16946218#comment-16946218
 ] 

Haisheng Yuan edited comment on CALCITE-3386 at 10/7/19 9:06 PM:
-----------------------------------------------------------------

It is an exception, not an error. Throwing a new exception can also be treated 
as a signal, like FileNotFoundException. 
https://docs.oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html
The only difference is whether we throw a new exception, or throw a singleton 
exception.
Not every developer is aware that the exception was just a signal, not a true 
exception.


was (Author: hyuan):
It is an exception, not an error. Throwing an exception can also be treated as 
a signal, like FileNotFoundException. 
https://docs.oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html

> CyclicMetadataException gives misleading stack trace
> ----------------------------------------------------
>
>                 Key: CALCITE-3386
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3386
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Zuozhi Wang
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.22.0
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Calcite currently reuses the same instance when throwing 
> CyclicMetadataException as shown below. 
> {code:java}
> /** Singleton instance. Since this exception is thrown for signaling 
> purposes, * rather than on an actual error, re-using a singleton instance 
> saves the * effort of constructing an exception instance. */ 
> @SuppressWarnings("ThrowableInstanceNeverThrown") 
> public static final CyclicMetadataException INSTANCE = new 
> CyclicMetadataException();
> {code}
>  
> Reusing the same exception instance gives the wrong stack trace, see: 
> [https://stackoverflow.com/questions/15090664/is-it-safe-to-store-an-instance-of-an-exception-and-reuse-it]
> The misleading stack trace causes many confusions when debugging. The 
> potential performance impact because of object construction is minor compared 
> to the time spent on debugging. Therefore it should be changed to not reuse 
> the singleton instance.
> A pull request have been opened to fix this issue: 
> [https://github.com/apache/calcite/pull/1484]
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to