Andrew Stitcher created QPID-5586:
-------------------------------------
Summary: qpid::messaging::Session::nextReceiver can throw
exception not descended from qpid::types::Exception
Key: QPID-5586
URL: https://issues.apache.org/jira/browse/QPID-5586
Project: Qpid
Issue Type: Bug
Components: C++ Client
Affects Versions: 0.26, 0.27
Reporter: Andrew Stitcher
Fix For: 0.27
If a qpid messaging connection or (I think) a session is closed in one thread
whilst another thread is in Session::nextReceiver(...) then
qpid::ClosedException will be thrown.
This is definitely wrong! (There is no way to catch this exception using only
the messaging library).
It seems that there needs to be a new qpid::messaging exception to cover the
case that you were waiting for a receiver and the whole session has gone away.
Certainly you need to know that you can't refer to the session any more.
It cannot be sufficient to assert that you must keep sessions around until all
the nextReceiver() calls using them are finished with the current API as there
is no way to preempt those calls externally. So a service loop waiting to for a
receiver to process will be stuck waiting until the session closes. Even if you
poll by using timeouts there is no way on return to tell that the session you
were just listening on is dead.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]