[zeromq-dev] Newbie Bait Request: Debug "Warning" mechanism.

Matt Weinstein matt_weinstein at yahoo.com
Tue Aug 17 17:02:12 CEST 2010

BTW, how will inter-thread socket portability affect this?
Will the grab_the_socket() operator cause the recv to exit?
Will a second thread be able to add subscribes for you?

I found my original comment:

> NB:
> A multi-socket blocking poll() could legitimately include a ZMQ_SUBS
> with no subscriptions.
> A socket without subscriptions might be waiting for a zmq_term()

So why should poll() behave differently on the socket than recv()?   
You're interpreting program correctness.

On Aug 17, 2010, at 10:40 AM, Pieter Hintjens wrote:

> Matt,
> To clarify why this use case does not apply:
> - A subscriber listens to a SUB socket
> - It also gets commands via a second socket
> - It applies those commands to the SUB socket as filters
> Its logic will be:
> Repeat:
>  - poll for activity on either socket
>  - if cmd socket, subscribe/unsubscribe filter
>  - if sub socket, process incoming data
> If there are no filters, it cannot get activity on the sub socket.
> Therefore it will never block on recv() on the sub socket with no
> filters.
> The only cases I can see where you'd end up blocking on a dead SUB  
> socket are:
> * If you combined commands with updates on one socket (bad design, we
> don't need to support it)
> * If you mysteriously decided to stop using poll and switch to
> blocking recv() just when the last filter is gone (pathological, not
> relevant)
> * If you made the classic programming error (which is relevant and
> which I'd like to catch).
> Are there flaws in this reasoning?
I'm exiting.
> -Pieter
>> On Aug 17, 2010 3:49 PM, "Matt Weinstein"  
>> <matt_weinstein at yahoo.com> wrote:
>>> Can't assert, it's a legitimate case, imagine a socket that receives
>>> command sequences, and finally receives its last unsubscribe just
>>> before ETERM, e.g.
>>> [S] CMD
>>> [S] ABC
>>> [S] DEF
>>> ... weeks later...
>>> [U] ABC
>>> [U] DEF
>>> [U] CMD
>>> Should I bring down the whole platform (on the remote side)?
>>> Should the controller have sent [U] CMD? Probably not, but that's
>>> life, it shouldn't cause a calamity.
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

More information about the zeromq-dev mailing list