Re: [zeromq-dev] Router-Router Reconnection Issue
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
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
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