Buggy code:
public class StorageProxy implements StorageProxyMBean { private static final Logger logger = Logger . getLogger ( StorageProxy . class ) ; private static final LatencyTracker readStats = new LatencyTracker ( ) ; private static final LatencyTracker rangeStats = new LatencyTracker ( ) ; private static final LatencyTracker writeStats = new LatencyTracker ( ) ; private static boolean hintedHandoffEnabled = DatabaseDescriptor . hintedHandoffEnabled ( ) ; private StorageProxy ( ) { } public static final Comparator < String > keyComparator = new Comparator < String > ( ) { public int compare ( String o1 , String o2 ) { } } ; public static void mutate ( List < RowMutation > mutations ) { } private static void addHintHeader ( Message message , InetAddress target ) { } public static void mutateBlocking ( List < RowMutation > mutations , ConsistencyLevel consistency_level ) throws TimeoutException , UnavailableException { } private static void assureSufficientLiveNodes ( int blockFor , Collection < InetAddress > writeEndpoints , Multimap < InetAddress , InetAddress > hintedEndpoints , ConsistencyLevel consistencyLevel ) throws UnavailableException { } private static void insertLocalMessage ( final RowMutation rm , final WriteResponseHandler responseHandler ) { } private static int determineBlockFor ( int expandedTargets , ConsistencyLevel consistency_level ) { } public static List < Row > readProtocol ( List < ReadCommand > commands , ConsistencyLevel consistency_level ) throws IOException , TimeoutException , InvalidRequestException , UnavailableException { if ( instance . isBootstrapMode ( ) ) <START_BUG> throw new InvalidRequestException ( "This<seq2seq4repair_space>node<seq2seq4repair_space>cannot<seq2seq4repair_space>accept<seq2seq4repair_space>reads<seq2seq4repair_space>until<seq2seq4repair_space>it<seq2seq4repair_space>has<seq2seq4repair_space>bootstrapped" ) ; <END_BUG> long startTime = System . nanoTime ( ) ; List < Row > rows ; if ( consistency_level == ( ConsistencyLevel . ONE ) ) { rows = StorageProxy . weakRead ( commands ) ; } else { assert ( consistency_level . getValue ( ) ) >= ( QUORUM . getValue ( ) ) ; rows = StorageProxy . strongRead ( commands , consistency_level ) ; } StorageProxy . readStats . addNano ( ( ( System . nanoTime ( ) ) - startTime ) ) ; return rows ; } private static List < Row > weakRead ( List < ReadCommand > commands ) throws IOException , TimeoutException , UnavailableException { } private static List < Row > strongRead ( List < ReadCommand > commands , ConsistencyLevel consistency_level ) throws IOException , TimeoutException , UnavailableException { } public static List < Row > getRangeSlice ( RangeSliceCommand command , ConsistencyLevel consistency_level ) throws IOException , TimeoutException , UnavailableException { } static List < AbstractBounds > getRestrictedRanges ( final AbstractBounds queryRange ) { } public long getReadOperations ( ) { } public long getTotalReadLatencyMicros ( ) { } public double getRecentReadLatencyMicros ( ) { } public long getRangeOperations ( ) { } public long getTotalRangeLatencyMicros ( ) { } public double getRecentRangeLatencyMicros ( ) { } public long getWriteOperations ( ) { } public long getTotalWriteLatencyMicros ( ) { } public double getRecentWriteLatencyMicros ( ) { } public boolean getHintedHandoffEnabled ( ) { } public void setHintedHandoffEnabled ( boolean b ) { } public static boolean isHintedHandoffEnabled ( ) { } static class weakReadLocalCallable implements Callable < Object > { private ReadCommand command ; weakReadLocalCallable ( ReadCommand command ) { } public Object call ( ) throws IOException { } } }

Fix:
throw new UnavailableException ( ) ;