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 indicate different
error conditions.



Version: Cassandra-3.11 (commit: 123113f7b887370a248669ee0db6fdf13df0146e)

File:
CASSANDRA-ROOT/src/java/org/apache/cassandra/service/StorageService.java

Line: 1313

try
{
    ...
}
catch (InterruptedException e)
{
    throw new RuntimeException("Interrupted while waiting on rebuild
streaming");
}



RuntimeException is usually used to represent errors in the program logic
(think of one of its subclasses, NullPointerException), while the error
message indicates that an interrupt has occurred. This mismatch could be a
problem. For example, the callers may miss the possibility that
StorageService.rebuild() can be interrupted because it does not throw any
InterruptedException. Or, the callers trying to handle other
RuntimeException may accidentally (and incorrectly) handle the interrupt.


Do you think this is a bug?


Thanks!

Reply via email to