From d951f52538fc6423f0ac221ccb72473954465ca3 Mon Sep 17 00:00:00 2001 From: Sylvain Lebresne Date: Mon, 18 Apr 2011 22:16:29 +0000 Subject: [PATCH] Check for dead neighbors before starting repair patch by slebresne; reviewed by jbellis for CASSANDRA-2290 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1094796 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/cassandra/service/AntiEntropyService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/java/org/apache/cassandra/service/AntiEntropyService.java b/src/java/org/apache/cassandra/service/AntiEntropyService.java index 9e4ba7bfe9..0463bc708e 100644 --- a/src/java/org/apache/cassandra/service/AntiEntropyService.java +++ b/src/java/org/apache/cassandra/service/AntiEntropyService.java @@ -39,6 +39,7 @@ import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.Table; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; +import org.apache.cassandra.gms.FailureDetector; import org.apache.cassandra.io.AbstractCompactedRow; import org.apache.cassandra.io.ICompactSerializer; import org.apache.cassandra.io.sstable.SSTableReader; @@ -753,6 +754,16 @@ public class AntiEntropyService return; } + // Checking all nodes are live + for (InetAddress endpoint : endpoints) + { + if (!FailureDetector.instance.isAlive(endpoint)) + { + logger.info("Could not proceed on repair because a neighbor (" + endpoint + ") is dead: " + getName() + " failed."); + return; + } + } + // begin a repair session Callback callback = new Callback(); AntiEntropyService.this.sessions.put(getName(), callback);