From a11bc78656dd4740960c0a1eb6265f910337a16b Mon Sep 17 00:00:00 2001 From: Yuki Morishita Date: Fri, 1 May 2015 16:52:47 -0500 Subject: [PATCH] Fix streaming hang when retrying patch by yukim; reviewed by jmckenzie for CASSANDRA-9132 --- CHANGES.txt | 1 + .../cassandra/streaming/messages/IncomingFileMessage.java | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 2dabbf9e68..e9287ec39f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -57,6 +57,7 @@ (CASSANDRA-8808) * Fix MT mismatch between empty and GC-able data (CASSANDRA-8979) * Fix incorrect validation when snapshotting single table (CASSANDRA-8056) + * Fix streaming hang when retrying (CASSANDRA-9132) 2.0.14 diff --git a/src/java/org/apache/cassandra/streaming/messages/IncomingFileMessage.java b/src/java/org/apache/cassandra/streaming/messages/IncomingFileMessage.java index a403390d07..5e0e087d86 100644 --- a/src/java/org/apache/cassandra/streaming/messages/IncomingFileMessage.java +++ b/src/java/org/apache/cassandra/streaming/messages/IncomingFileMessage.java @@ -46,8 +46,15 @@ public class IncomingFileMessage extends StreamMessage { return new IncomingFileMessage(reader.read(in), header); } + catch (IOException eof) + { + // Reading from remote failed(i.e. reached EOF before reading expected length of data). + // This can be caused by network/node failure thus we are not retrying + throw eof; + } catch (Throwable e) { + // Otherwise, we can retry session.doRetry(header, e); return null; }