Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 e4eba2538 -> f970de557 refs/heads/trunk eaf7d81e7 -> 16736314b
Check connection errors more reliably in CqlRecordWriter Patch by Philip Thompson; reviewed by Sam Tunnicliffe for CASSANDRA-9419 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f970de55 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f970de55 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f970de55 Branch: refs/heads/cassandra-2.2 Commit: f970de55746dd074843d8cfd5385b12acda56ee9 Parents: e4eba25 Author: Philip Thompson <ptnapol...@gmail.com> Authored: Wed May 20 10:49:02 2015 +0100 Committer: Sam Tunnicliffe <s...@beobal.com> Committed: Wed May 20 10:51:45 2015 +0100 ---------------------------------------------------------------------- .../org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f970de55/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java b/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java index 132273c..c507197 100644 --- a/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java +++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java @@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory; import com.datastax.driver.core.exceptions.AuthenticationException; +import com.datastax.driver.core.exceptions.DriverException; import com.datastax.driver.core.exceptions.InvalidQueryException; import com.datastax.driver.core.exceptions.NoHostAvailableException; import com.datastax.driver.core.BoundStatement; @@ -321,7 +322,10 @@ class CqlRecordWriter extends RecordWriter<Map<String, ByteBuffer>, List<ByteBuf catch (Exception e) { //If connection died due to Interrupt, just try connecting to the endpoint again. - if (Thread.interrupted()) { + //There are too many ways for the Thread.interrupted() state to be cleared, so + //we can't rely on that here. Until the java driver gives us a better way of knowing + //that this exception came from an InterruptedException, this is the best solution. + if (e instanceof DriverException && e.getMessage().contains("Connection thread interrupted")) { lastException = new IOException(e); iter.previous(); } @@ -334,6 +338,7 @@ class CqlRecordWriter extends RecordWriter<Map<String, ByteBuffer>, List<ByteBuf lastException = new IOException(e); break outer; } + continue; } try