Fix EAGAIN bug in ZMQ-RPC/ZMQ-PUB #9052
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A user reported over IRC that connecting to the ZMQ-RPC server via web browser would crash the ZMQ-RPC permanently, until restart. After investigation, I found out that this only happens when the ZMQ-PUB server is also enabled.
When ZMQ-PUB is enabled, the ZMQ server switches to
zmq_poll
instead of using a blocking read withzmq_read
. Invalid messages are not handled by thezmq_poll
, and instead are left tozmq_read
to filter out. So a "spurious" wakeup is done forzmq_poll
only to be given anEAGAIN
error byzmq_read
.This should finally clear out the longstanding issue from #8199 - now that I know whats happening, I think this is the only fix. #8592 is being closed too.