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: 4008 try { ... } catch (InterruptedException e) { throw new RuntimeException("Node interrupted while decommissioning"); } 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 be a problem. For example, the callers may miss the possibility that StorageService.decommission() 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!