[
https://issues.apache.org/jira/browse/CASSANDRA-15117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
eBugs in Cloud Systems updated CASSANDRA-15117:
-----------------------------------------------
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.
Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e)
File:
CASSANDRA-ROOT/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
Line: 225
{code:java}
throw new RuntimeException("Unable to list directory " + dir);{code}
{{RuntimeException}} is usually used to represent errors in the program logic
(think of one of its subclasses, {{NullPointerException}}), while the error
message indicates that {{maybeRestoreArchive()}} failed to list a directory.
Will this mismatch be a problem? For example, the callers may miss the
possibility that {{maybeRestoreArchive()}} can fail to list a directory because
it does not throw any {{IOException}}. Or, the callers trying to handle other
{{RuntimeException}} may accidentally (and incorrectly) handle the directory
listing 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 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: 225
{code:java}
throw new RuntimeException("Unable to list 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 {{maybeRestoreArchive()}} failed to list a
directory. Will this mismatch be a problem? For example, will the callers miss
the possibility that {{maybeRestoreArchive()}} can fail to list a directory
because it does not throw any {{IOException}}? Or, will the callers trying to
handle other {{RuntimeException}} accidentally (and incorrectly) handle the
directory listing failure?
> CommitLogArchiver.maybeRestoreArchive() throws a RuntimeException when it
> failed to list a directory
> ----------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-15117
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15117
> 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.
>
> Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e)
> File:
> CASSANDRA-ROOT/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
> Line: 225
> {code:java}
> throw new RuntimeException("Unable to list directory " + dir);{code}
>
> {{RuntimeException}} is usually used to represent errors in the program logic
> (think of one of its subclasses, {{NullPointerException}}), while the error
> message indicates that {{maybeRestoreArchive()}} failed to list a directory.
> Will this mismatch be a problem? For example, the callers may miss the
> possibility that {{maybeRestoreArchive()}} can fail to list a directory
> because it does not throw any {{IOException}}. Or, the callers trying to
> handle other {{RuntimeException}} may accidentally (and incorrectly) handle
> the directory listing failure.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]