From 42cbaecbe00c9e51f1ffbc5973b43b125123566b Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 19 Nov 2014 12:30:10 +0000 Subject: [PATCH] Let the client take care of reconnecting only when the stream is actually ended --- libraries/redis-wrapper/index.coffee | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/redis-wrapper/index.coffee b/libraries/redis-wrapper/index.coffee index 581c419469..8378e47e5d 100644 --- a/libraries/redis-wrapper/index.coffee +++ b/libraries/redis-wrapper/index.coffee @@ -41,17 +41,20 @@ module.exports = RedisSharelatex = reconnectIfInactive = () -> timeSinceLastHeartbeat = Date.now() - lastHeartbeat if timeSinceLastHeartbeat > reconnectAfter - console.warn "[#{new Date()}] No heartbeat for #{timeSinceLastHeartbeat}ms on #{heartbeatChannel}, reconnecting" # If the client realises it isn't connected then will be trying to # restablish the connection, so there's nothing for us to do. If # it still thinks it's connected, then disconnect it and start to reconnect. if sub.connected + console.warn "[#{new Date()}] No heartbeat for #{timeSinceLastHeartbeat}ms on #{heartbeatChannel}, reconnecting" sub.end() # We ended the connection, but want to start it up again, so set # the internal closing variable: sub.closing = false - # Trigger the reconnect: - sub.connection_gone("no heartbeat for #{timeSinceLastHeartbeat}ms") + # Trigger the reconnect (automatically triggered by sub.end() with closing = false): + # sub.connection_gone("no heartbeat for #{timeSinceLastHeartbeat}ms") + else + console.warn "[#{new Date()}] No heartbeat for #{timeSinceLastHeartbeat}ms on #{heartbeatChannel}, but not reconnecting (already reconnecting)" + # Reset timer after triggering a reconnect to avoid potential cascading failure. lastHeartbeat = Date.now()