discrepancy between observed PUSH blocking behavior and manpage for zmq_socket

Description

I'm using pyzmq 2.0.10 backed by zeromq-2.0.10 with the stock python 2.6.6 provided with Ubuntu 10.10 desktop 32-bit. The manpage for zmq_socket reads:

When a ZMQ_PUSH socket enters an exceptional state due to having
reached the high water mark for all downstream nodes, or if there
are no downstream nodes at all, then any zmq_send(3) operations on
the socket shall block until the exceptional state ends or at least
one downstream node becomes available for sending; messages are not
discarded.

However, I'm not getting blocking behavior when I shut off my PULLer. This is for the case without HWM. I read the above to say that when there is no downstream node, my PUSHer should block. Instead, it keeps on queuing up messages, which it faithfully delivers upon starting/restarting the receiver.

Here are the test scripts:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python import zmq import time context = zmq.Context() socket = context.socket(zmq.PUSH) socket.connect("tcp://localhost:5555") count = 0 while True: count += 1 socket.send(`count`) print `count` time.sleep(1) #!/usr/bin/env python import zmq context = zmq.Context() socket = context.socket(zmq.PULL) socket.bind("tcp://*:5555") while True: message = socket.recv() print message

Environment

None

Status

Assignee

Unassigned

Reporter

Nate75Sanders

Labels

None

Priority