diff --git a/src/java/org/apache/cassandra/hints/HintsService.java b/src/java/org/apache/cassandra/hints/HintsService.java index 1fd2d1a632ff..f78027db171b 100644 --- a/src/java/org/apache/cassandra/hints/HintsService.java +++ b/src/java/org/apache/cassandra/hints/HintsService.java @@ -393,4 +393,8 @@ public boolean isShutDown() { return isShutDown; } -} + + public boolean hasHints() + { + return catalog.hasFiles(); + }} diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 13cca3d38a86..45691b040694 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -4224,7 +4224,6 @@ private void unbootstrap(Runnable onFinish) throws ExecutionException, Interrupt // Start with BatchLog replay, which may create hints but no writes since this is no longer a valid endpoint. Future batchlogReplay = BatchlogManager.instance.startBatchlogReplay(); - Future streamSuccess = streamRanges(rangesToStream); // Wait for batch log to complete before streaming hints. logger.debug("waiting for batch log processing."); @@ -4232,13 +4231,22 @@ private void unbootstrap(Runnable onFinish) throws ExecutionException, Interrupt setMode(Mode.LEAVING, "streaming hints to other nodes", true); - Future hintsSuccess = streamHints(); + if(HintsService.instance.hasHints()) + { + Future streamSuccess = streamRanges(rangesToStream); + Future hintsSuccess = streamHints(); - // wait for the transfer runnables to signal the latch. - logger.debug("waiting for stream acks."); - streamSuccess.get(); - hintsSuccess.get(); - logger.debug("stream acks all received."); + // wait for the transfer runnables to signal the latch. + logger.debug("waiting for stream acks."); + streamSuccess.get(); + hintsSuccess.get(); + logger.debug("stream acks all received."); + } + else + { + logger.debug("no hints on the node."); + } + leaveRing(); onFinish.run(); }