diff --git a/core/src/main/java/me/prettyprint/cassandra/connection/CassandraHostRetryService.java b/core/src/main/java/me/prettyprint/cassandra/connection/CassandraHostRetryService.java index 2c8fb0f6c..2af51a465 100644 --- a/core/src/main/java/me/prettyprint/cassandra/connection/CassandraHostRetryService.java +++ b/core/src/main/java/me/prettyprint/cassandra/connection/CassandraHostRetryService.java @@ -10,16 +10,11 @@ import me.prettyprint.cassandra.service.CassandraHost; import me.prettyprint.cassandra.service.CassandraHostConfigurator; import me.prettyprint.cassandra.service.ExceptionsTranslator; -import me.prettyprint.hector.api.exceptions.HCassandraInternalException; -import me.prettyprint.hector.api.exceptions.HectorException; import me.prettyprint.hector.api.exceptions.HectorTransportException; -import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.Sets; - public class CassandraHostRetryService extends BackgroundCassandraHostService { private static Logger log = LoggerFactory.getLogger(CassandraHostRetryService.class); @@ -56,15 +51,23 @@ void shutdown() { log.info("Downed Host retry shutdown complete"); } - public void add(CassandraHost cassandraHost) { - if(verifyConnection(cassandraHost)) { - connectionManager.addCassandraHost(cassandraHost); - return; - } + public void add(final CassandraHost cassandraHost) { downedHostQueue.add(cassandraHost); if ( log.isInfoEnabled() ) { log.info("Host detected as down was added to retry queue: {}", cassandraHost.getName()); } + + //schedule a check of this host immediately, + executor.submit(new Runnable() { + @Override + public void run() { + if(verifyConnection(cassandraHost)) { + connectionManager.addCassandraHost(cassandraHost); + downedHostQueue.remove(cassandraHost); + return; + } + } + }); } public boolean remove(CassandraHost cassandraHost) {