Alex Rudyy created QPID-8212:
--------------------------------
Summary: [JMS AMQP 0-x][AMQP 0-8..0-91] Consumer close can block
for 60 seconds and endup in time-out exception
Key: QPID-8212
URL: https://issues.apache.org/jira/browse/QPID-8212
Project: Qpid
Issue Type: Bug
Components: JMS AMQP 0-x
Affects Versions: qpid-java-client-0-x-6.3.1
Reporter: Alex Rudyy
Fix For: qpid-java-client-0-x-6.3.2
When method {{MessageConsumer#close()}} is invoked in one thread and method
{{Connection#close()}} is invoked in another thread, the incoming
{{BasicCancelOk}} frame can be ignored due to {{Connection#_closed}} flag being
set. As result, the call to {{MessageConsumer#close()}} can block for 60
seconds and end up in exception due to not being able to receive
{{BasicCancelOk}}. Invocation of {{Connection#close()}} also gets blocked due
to message delivery lock being hold on consumer close.
The defect was introduced as part of changes made against QPID-8185 in commit
[f89f6c2f45d11fc63551d0d61c17eceedd6bd247|https://git-wip-us.apache.org/repos/asf?p=qpid-jms-amqp-0-x.git;h=f89f6c2]
Method {{AMQProtocolSession#isClosedForInput}} checks whether session is closed
for input by calling {{AMQSession#isClosed()}}. The latter returns true when
either {{AMQSession#_closed}} or {{AMQConnection#_closed}} holds {{true}}.
Only {{AMQSession#_closed}} should be checked in
{{AMQProtocolSession#isClosedForInput}}.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]