[zeromq-dev] [bug+workaround] socket_t not closed properly, still used
Martin Sustrik
sustrik at 250bpm.com
Fri Jan 21 14:54:56 CET 2011
On 01/21/2011 01:52 PM, Thijs Terlouw wrote:
> On Fri, Jan 21, 2011 at 8:13 PM, Martin Sustrik<sustrik at 250bpm.com> wrote:
> 2) I didn't debug the 2nd part detailedly, but I suspect indeed that
> untill when the socket_t is destructed, the peer still sends messages
> to it - which will then all fail (no reply). That's at least the
> symptom I was seeing in my application. This part is the real nasty
> bug.
Also note that this problem cannot be really solved. When you invoke
zmq_close() there may be some messages already queued in the socket and
thus they are dropped instead of received.
The solution exists on higher level and seems to depend on the messaging
pattern:
1. PUB/SUB - Drop the messages.
2. REQ/REP - Requester should resend the request after timeout has
expired. That way it can compensate for lost requests or replies.
3. PUSH/PULL - Implementing a 0mq-level ACKs could possibly help here.
Martin
More information about the zeromq-dev
mailing list