Просмотр исходного кода

Let the client take care of reconnecting only when the stream is actually ended

James Allen 12 лет назад
Родитель
Сommit
42cbaecbe0
1 измененных файлов с 6 добавлено и 3 удалено
  1. 6 3
      libraries/redis-wrapper/index.coffee

+ 6 - 3
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()