[zeromq-dev] inproc: If first connect occurs before bind, then retries don't seem to succeed...

Andy Ballingall TF ballingall at thefoundry.co.uk
Thu Dec 27 11:31:52 CET 2012


Hi Pieter,

On 22 December 2012 12:06, Pieter Hintjens <ph at imatix.com> wrote:
> Yes, this seems to be a bug. I've logged an issue
> https://zeromq.jira.com/browse/LIBZMQ-487 and uploaded a test case:
> https://github.com/zeromq/issues/blob/master/487/issue.c.
>
Thanks!

> However I'd advise against retrying a connect. Since you're using this
> between threads, you can arrange the thread creation order to always
> do the bind (in the parent) before the connect (in the child).
> In the rare case where you want to inproc between two child threads, get the
> first one to signal to its parent that it's ready before starting the
> second one.

That's the approach I'll have to take as my use case is there being N
children, where child 1 sets up the bind() and children 2 to N
connect() to child 1.

Thanks for your help,
Andy

>
> -Pieter
>
> On Fri, Dec 21, 2012 at 12:28 PM, Andy Ballingall TF
> <ballingall at thefoundry.co.uk> wrote:
>> Hi Pieter,
>>
>>> For inproc connect works synchronously and requires that bind has
>>> happened already. See http://api.zeromq.org/3-2:zmq-inproc#toc4
>>>
>>> It's not consistent with tcp:// and ipc:// but it does work in most cases.
>>
>> The odd thing I'm seeing though is that If my first connect() happens
>> to beat the first bind(), - failing as expected - it appears that all
>> the future attempts to connect() fail too, even though most of them
>> certainly are happening after the bind() has had plenty of time to
>> complete.
>>
>> If I ensure bind() happens first by using a small sleep() after
>> spawning the thread which does the bind(), then it all works fine as
>> you say (and I'm running with this workaround for now).
>>
>> So it's just this question of whether I should be able to retry an
>> initially failing connect() until it succeeds (assuming the bind()
>> completes). My test program recreates the scenario with a retry-loop,
>> but I can't seem to get the connect() to work at all if it failed
>> once, but I'm quite new to zmq and might be making some basic error.
>>
>> Thanks,
>> Andy
>>
>>>
>>> -Pieter
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
>>
>> --
>> Andy Ballingall
>> Senior Software Engineer
>>
>> The Foundry
>> 6th Floor, The Communications Building,
>> 48, Leicester Square,
>> London, WC2H 7LT, UK
>> Tel: +44 (0)20 7968 6828 - Fax: +44 (0)20 7930 8906
>> Web: http://www.thefoundry.co.uk/
>>
>> The Foundry Visionmongers Ltd.
>> Registered in England and Wales No: 4642027
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



--
Andy Ballingall
Senior Software Engineer

The Foundry
6th Floor, The Communications Building,
48, Leicester Square,
London, WC2H 7LT, UK
Tel: +44 (0)20 7968 6828 - Fax: +44 (0)20 7930 8906
Web: http://www.thefoundry.co.uk/

The Foundry Visionmongers Ltd.
Registered in England and Wales No: 4642027



More information about the zeromq-dev mailing list