Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Later
-
0.7
-
None
Description
Whilst working on adding session.close() method to the Java brokers QMF support it has been observed that the 0-10 session.request-timeout and session.timeout control methods are not handled by the client (or the broker) and are ignored either with a logged warning or silently. The spec states both sender and reciever "MUST handle" these.
During session close the broker sends a request to set the execution state timeout to 0, but the client ignores it. The broker then sends a session.detach. As a result of ignoring the request to set the execution state timeout to 0 the client currently does not move the session to the CLOSED state and instead uses the DETACHED state because its Session was created with an expiry value of 1 ( AMQSession_0_10 L182: _qpidSession = _qpidConnection.createSession(1). This results in further attempts to use the Session waiting for a timeout period before throwing an exception indicating a timeout whilst waiting for the session to become open. Changing the expiry value to one would result in the client Session moving to the CLOSED state and instead throw an exception indicating the session is closed when further attempt is made to use it.