You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Zuozhi Wang (Jira)" <ji...@apache.org> on 2019/10/04 21:04:00 UTC

[jira] [Created] (CALCITE-3386) CyclicMetadataException gives misleading stack trace

Zuozhi Wang created CALCITE-3386:
------------------------------------

             Summary: 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


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 spent on debugging. Therefore it should be changed to not reuse the singleton instance.

 

 



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