Skip to content

Python REQ port stops working after a receive timeout #598

Description

@bhuvan-somisetty

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:

  1. Connect a Python REQ port to a REP peer that receives but doesn't reply.
  2. read() times out (TIMEOUT).
  3. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions