On 18/12/2019 12:33 pm, Toralf Lund wrote:
I get the exact behaviour I'm seeing now only in a version that was deployed about a week ago, and since then, between 60 and 70 session-busy exceptions have been registered. Most of these came from Session::nextReceiver() or Receiver::fetch(), but exactly 2 were raised by Sender::send(). In both these cases, the application locked up more or less directly - the session error was at least the last item logged when the process was in the locked state. It has not got stuck in any other situations.

Due to the way exception handling is implemented, there is a chance that there is another attempt at sending data after an exception from Sender::send(), without resetting the session or anything. On the other hand, a receive/nextReceiver() exception is in practice always followed directly by

   if(session.isValid() && session.hasError()) {
     Util::debug(1, "Reset AMQP session with error...");
     session.close();
     session=qpid::messaging::Session();
   }

The same code is also executed eventually in the send case, but there may be other intervening Sender::send() calls, and also operations like Session::getSender() or even (at least in theory) Session::createSender().

Do multiple threads use the session concurrently (wondering if it is possible that the session is deleted while a send call is in progress)?

I think for the 'locking up' some pstack output would be useful. For the extra connections, some more logging if possible.

I can't see anything that would obviously cause a lock up in the send, and if it is a heartbeat timeout that causes the reconnect I would expect the socket to be closed.

Sorry we could not be more help at this point.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to