Same thing as #576 but in Python. #577 only fixed Java.
After a REQ port times out on read(), the socket never gets reset. Every write after that fails with:
ZMQ write error on port p (name: x): Operation cannot be accomplished in current state
write() just logs it and returns, so the node keeps running but nothing is actually sent. And if the peer replies late, the next read() returns that old reply as SUCCESS.
Repro:
- Connect a Python REQ port to a REP peer that receives but doesn't reply.
- read() times out (TIMEOUT).
- Every write after that fails with the error above.
Expected: recreate the socket after a timeout (or use REQ_RELAXED + REQ_CORRELATE) so the port keeps working.
Affects concore.py and concoredocker.py. Tested on dev at 32951ab, pyzmq 27.1.0.
Same thing as #576 but in Python. #577 only fixed Java.
After a REQ port times out on read(), the socket never gets reset. Every write after that fails with:
write() just logs it and returns, so the node keeps running but nothing is actually sent. And if the peer replies late, the next read() returns that old reply as SUCCESS.
Repro:
Expected: recreate the socket after a timeout (or use REQ_RELAXED + REQ_CORRELATE) so the port keeps working.
Affects concore.py and concoredocker.py. Tested on dev at 32951ab, pyzmq 27.1.0.