[zeromq-dev] Water marks/pipe/activate_write problem

Victor Luchitz vluchits at gmail.com
Tue May 6 17:56:54 CEST 2014


I've been trying to build semi-reliable messaging infrastructure around ZMQ
4.0.3 and mostly got everything working except for a few things.

I'm currently using PUSH/PULL model to pass messages between client (PUSH)
and server(PULL) in non-blocking fashion.

The weird behavior that I'm observing is that in my case the PUSH socket
never receives the command_t::activate_write command from the other end of
the pipe. The low water mark is set on the PULL socket and I _do_ see the
code path in pipe.cpp being triggered:

send_activate_write (peer, msgs_read);

on the server. However, it seems that the command goes elsewhere locally.
That in turns leads us to peers_msgs_read equalling to 0
in zmq::pipe_t::check_write() on the PUSH side and eventually reaching the
HWM even though the messages are properly communicated to the other end of
the pipe. That in turns causes messages to be dropped and/or ZMQ reserving
excessive amounts of RAM.

Sorry if it all seems so confusing but that's the best explanation I can
come up with at the moment.

Best regards,
 Victor Luchitz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140506/6bc33196/attachment.htm>

More information about the zeromq-dev mailing list