For code that uses ZMQStreams for heartbeat (notebook, hub), it is actually possible for server load to disrupt the heartbeat. I'm not sure if this actually happens, but it is a real possibility. I expect the most likely case is the Hub, which can have very long blocking calls when using the mongodb/sqlite task stores.
The relevant aspects of the code:
stream.send(msg)
does not actually send a message, it registers a message for sending, which will happen at the top of the next loop iteration at the earliest.stream.send(msg)
and socket.send(msg)
.stream.send()
, not socket.send()
, so the above delay is interpreted as a delay in the heartbeat response, and can be longer than the total heartbeat period, causing a heart failure.Possible solutions:
stream.flush()
immediately after stream.send()
, which will cause the socket to send the message, if possible (it will never be impossible with our current patterns).stream.socket.send()
, bypassing the issue entirely.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4