Hi everyone,

we are struggling with a problem in our implementation that uses jeroMQ
0.3.5 and would like to ask you for advises. We basically have several
producers ("Requesters") running on multiple instances pointing to a single
instance listening on different ports (each port representing a different
"Replyer").

The message exchange is simple. We send a milestone report as a REQ and
expect something we call "Async answer" as a REP back. I see that message
flow working for several requests but one of them eventually fails to get
the reply back. That request that fails is usually generated by the same
producer. I can reproduce this behavior from time to time.

I'm sharing with you a TCP dump captured on the "Replyer" instance. Please
notice that on frame 75 there a Request arriving on port 15002 which never
gets a "Async Reply" back. Why would the OS (Ubuntu linux 12.04.5 LTS) not
deliver that message to 0MQ?

I'm saying it never delivered to 0MQ because I added a log right after the
0MQ socket recvStr() method call. And this particular message is not
printed under this circumstance.

This is the Replyer code:

try (ZContext context = new ZContext()) {
    ZMQ.Socket responder = context.createSocket(ZMQ.REP);
    try {
        responder.bind(String.format("tcp://*:%d", port));
        responder.setLinger(0);
        responder.setReceiveTimeOut(1000);
        while (isStarted()) {
            // Wait for next request from the client and do the work
            String request = responder.recvStr();
            LOG.info("Got request: {}", request);
            if (request == null) {
                continue;
            }
            ...
    } finally {
        terminated = true;
        context.destroySocket(responder);
        LOG.warn("Reply socket is going down");
    }
} catch (Exception e) {
    LOG.error(e.getMessage(), e);
}

I tried to reproduce it simulating the Request messages using two python
scripts pointing to the same "Replyer" but the error didn't happen.

I don't see any exception on the log. I don't see any

Any ideas on how to debug that?

Thanks in advance,
Douglas
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to