From 7e224bf2ddb12823cc00a99da928f0df8e3d5557 Mon Sep 17 00:00:00 2001 From: Logan Lowell Date: Wed, 30 Apr 2014 11:10:03 -0500 Subject: [PATCH] Enable reconnection policies for failed connection attempts --- src/main/scala/com/redis/RedisConnection.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/scala/com/redis/RedisConnection.scala b/src/main/scala/com/redis/RedisConnection.scala index 847236f..eaa79ec 100644 --- a/src/main/scala/com/redis/RedisConnection.scala +++ b/src/main/scala/com/redis/RedisConnection.scala @@ -46,8 +46,15 @@ private [redis] class RedisConnection(remote: InetSocketAddress, settings: Redis context watch pipe case CommandFailed(c: Connect) => - log.error("Connect failed for {} with {}. Stopping... ", c.remoteAddress, c.failureMessage) - context stop self + if (reconnectionSchedule.attempts < reconnectionSchedule.maxAttempts) { + val delayMs = reconnectionSchedule.nextDelayMs + log.error("Connect failed for {} with {}. Reconnecting in {} ms... ", c.remoteAddress, c.failureMessage, delayMs) + context become unconnected + context.system.scheduler.scheduleOnce(Duration(delayMs, TimeUnit.MILLISECONDS), IO(Tcp), Connect(remote))(context.dispatcher, self) + } else { + log.error("Connect failed for {} with {}. Stopping... ", c.remoteAddress, c.failureMessage) + context stop self + } } def transactional(pipe: ActorRef): Receive = withTerminationManagement {