Re: [zeromq-dev] Router-Router Reconnection Issue

2014-06-05 Thread Goswin von Brederlow
On Tue, Jun 03, 2014 at 02:13:12PM -0700, Jeremy Im wrote:
 Hello,
 
 We're using 0mq to great success, but we've run into a problem in using
 router-router connections; we are using explicit socket identities so that
 we can perform addressing from a single 0mq socket (e.g. on the client, we
 will connect to multiple servers by calling zmq_connect multiple times, and
 put the socket identity of the desired target server). The issue we are
 running into is when the server is taken offline, then brought back online,
 the client can no longer communicate with it.
 
 The following code snippet reproduces the issue we are seeing:
 https://gist.github.com/anonymous/0758bb155575aeb090cc
 
- Upon the server socket being closed, the client socket enters a
reconnect loop
- Even if zmq_disconnect is called on the client socket, it remains in
the reconnect loop
- Upon the server socket being available again, the reconnect loop
recreates the connection
- A subsequent zmq_connect from the client socket succeeds
- When sending a message, no message is received on the server
 
 If I comment out lines 237 and 245, the server does receive the message
 from the client. However, the monitor output would seem to indicate that
 there's no way to halt the reconnect loop short of closing the client
 socket. Is that the intended behaviour?
 
 Thanks,
 
 Jeremy

In ZeroMQ 4.1: man zmq-setsockopt 

  ZMQ_ROUTER_HANDOVER: handle duplicate client identities on ROUTER sockets

  If two clients use the same identity when connecting to a ROUTER, the
  results shall depend on the ZMQ_ROUTER_HANDOVER option setting. If
  that is not set (or set to the default of zero), the ROUTER socket
  shall reject clients trying to connect with an already-used identity.
  If that option is set to 1, the ROUTER socket shall hand-over the
  connection to the new client and disconnect the existing one.

Option value type   int
Option value unit   0, 1
Default value   0
Applicable socket types ZMQ_ROUTER

It takes a (long) while for tcp sockets to timeout and die when not
shut down properly. So when the server restarts the old connection
probably still lingers and prevents the new one from working. With
fixed identities you want to enable ZMQ_ROUTER_HANDOVER.

MfG
Goswin
___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


Re: [zeromq-dev] Router-Router Reconnection Issue

2014-06-05 Thread Justin Karneges
On 06/03/2014 02:13 PM, Jeremy Im wrote:
 We're using 0mq to great success, but we've run into a problem in using
 router-router connections; we are using explicit socket identities so
 that we can perform addressing from a single 0mq socket (e.g. on the
 client, we will connect to multiple servers by calling zmq_connect
 multiple times, and put the socket identity of the desired target
 server). The issue we are running into is when the server is taken
 offline, then brought back online, the client can no longer communicate
 with it.

Possibly the same bug I reported back in Feb:
http://lists.zeromq.org/pipermail/zeromq-dev/2014-February/025202.html

I haven't had time lately to look into a solution though.

Justin

___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


[zeromq-dev] Router-Router Reconnection Issue

2014-06-03 Thread Jeremy Im
Hello,

We're using 0mq to great success, but we've run into a problem in using
router-router connections; we are using explicit socket identities so that
we can perform addressing from a single 0mq socket (e.g. on the client, we
will connect to multiple servers by calling zmq_connect multiple times, and
put the socket identity of the desired target server). The issue we are
running into is when the server is taken offline, then brought back online,
the client can no longer communicate with it.

The following code snippet reproduces the issue we are seeing:
https://gist.github.com/anonymous/0758bb155575aeb090cc

   - Upon the server socket being closed, the client socket enters a
   reconnect loop
   - Even if zmq_disconnect is called on the client socket, it remains in
   the reconnect loop
   - Upon the server socket being available again, the reconnect loop
   recreates the connection
   - A subsequent zmq_connect from the client socket succeeds
   - When sending a message, no message is received on the server

If I comment out lines 237 and 245, the server does receive the message
from the client. However, the monitor output would seem to indicate that
there's no way to halt the reconnect loop short of closing the client
socket. Is that the intended behaviour?

Thanks,

Jeremy
___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev