qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gordon Sim <g...@redhat.com>
Subject Re: Heartbeats in C++ broker on Windows
Date Thu, 05 Jan 2012 13:00:27 GMT
On 01/04/2012 12:03 PM, wolfwolfswinkel wrote:
> The patch fixes my first issue (the broker not sending heartbeats).
> Unfortunately the second issue persists. Now I trigger a heartbeat timeout
> in the client by disconnecting a network cable. The client notices the
> missing heartbeat (shows the "debug Traffic timeout" message), but then does
> not do any reconnect attempts. When the Sender is up to capacity, it seems
> to block indefinitely in a sync() call. Stack trace below.

That looks like a problem on the client side. When the heartbeat fires 
it asks the AsynchIO part of the library to callback on an IO thread 
(AsynchIO::requestCallback()). The callback function is 
TCPConnector::eof() which just calls TCPConnector::close() which then 
calls AsynchIO::queueWriteClose(). That should result in the socket 
being closed and the application being notified of the closed socket.

As far as I can see, the only part that differs between windows and 
linux here is the AsyncIO implementation. My guess is that either the 
callback mechanism on AsynchIO isn't working as expected on windows, or 
somehow the close that it triggers isn't actually closing the socket and 
notifying the application as expected.

That will require a little more debugging however.

Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org

View raw message