You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "eBugs in Cloud Systems (JIRA)" <ji...@apache.org> on 2019/05/06 01:14:00 UTC

[jira] [Updated] (CASSANDRA-15116) CommitLogArchiver.construct() throws a RuntimeException when it failed to create a directory

     [ https://issues.apache.org/jira/browse/CASSANDRA-15116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

eBugs in Cloud Systems updated CASSANDRA-15116:
-----------------------------------------------
    Description: 
Dear Cassandra developers, we are developing a tool to detect exception-related bugs in Java. Our prototype has spotted the following {{throw}} statement whose exception class and error message seem to indicate different error conditions. Since we are not very familiar with Cassandra's internal work flow, could you please help us to verify if this is a bug, i.e., will the callers have trouble handling the exception, and will the users/admins have trouble diagnosing the failure?

 

Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e) 

File: CASSANDRA-ROOT/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java

Line: 110
{code:java}
throw new RuntimeException("Unable to create directory: " + dir);{code}
Reason: {{RuntimeException}} is usually used to represent errors in the program logic (think of one of its subclasses, {{NullPointerException}}), while the error message indicates that {{construct()}} failed to create a directory. Will this mismatch be a problem? For example, will the callers miss the possibility that {{construct()}} can fail to create a directory because it does not throw any {{IOException}}? Or, will the callers try to handle other {{RuntimeException}} accidentally (and incorrectly) handle the directory creation failure?

  was:
Dear Cassandra developers, we are developing a tool to detect exception-related bugs in Java. Our prototype has spotted the following {{throw}} statement whose exception class and error message seem to indicate different error conditions. Since we are not very familiar with Cassandra's internal work flow, could you please help us to verify if this is a bug, i.e., will the callers have trouble handling the exception, and will the users/admins have trouble diagnosing the failure?

 

Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e) 

File: CASSANDRA-ROOT/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java

Line: 110
{code:java}
throw new RuntimeException("Unable to create directory: " + dir);{code}
Reason: {{RuntimeException}} is usually used to represent errors in the program logic (think of one of its subclasses, {{NullPointerException}}), while the error message indicates that {{construct()}} failed to create a directory. Will this mismatch be a problem? For example, will the callers miss the possibility that {{construct()}} can fail to create a file because it does not throw any {{IOException}}? Or, will the callers try to handle other {{RuntimeException}} accidentally (and incorrectly) handle the directory creation failure?


> CommitLogArchiver.construct() throws a RuntimeException when it failed to create a directory
> --------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15116
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15116
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: eBugs in Cloud Systems
>            Priority: Normal
>
> Dear Cassandra developers, we are developing a tool to detect exception-related bugs in Java. Our prototype has spotted the following {{throw}} statement whose exception class and error message seem to indicate different error conditions. Since we are not very familiar with Cassandra's internal work flow, could you please help us to verify if this is a bug, i.e., will the callers have trouble handling the exception, and will the users/admins have trouble diagnosing the failure?
>  
> Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e) 
> File: CASSANDRA-ROOT/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
> Line: 110
> {code:java}
> throw new RuntimeException("Unable to create directory: " + dir);{code}
> Reason: {{RuntimeException}} is usually used to represent errors in the program logic (think of one of its subclasses, {{NullPointerException}}), while the error message indicates that {{construct()}} failed to create a directory. Will this mismatch be a problem? For example, will the callers miss the possibility that {{construct()}} can fail to create a directory because it does not throw any {{IOException}}? Or, will the callers try to handle other {{RuntimeException}} accidentally (and incorrectly) handle the directory creation failure?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org