[ 
https://issues.apache.org/jira/browse/QPID-5439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13857323#comment-13857323
 ] 

Ulrich Romahn commented on QPID-5439:
-------------------------------------

Update on the deadlock:
I checked the locations in the source where the deadlock occurs and noticed 
that Thread-1 is actually in a lock.wait() with a timeout. The timeout is set 
as half of the idleTimeout on the connection. Unfortunately, it appears that 
the idelTimeout is 0L and hence the wait is infinite.

> [AMQP 1.0 JMS client] Client hangs during connection.close()
> ------------------------------------------------------------
>
>                 Key: QPID-5439
>                 URL: https://issues.apache.org/jira/browse/QPID-5439
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.27
>         Environment: qpid-cpp 0.27 (latest trunk), amqp-1-0-client-jms 
> 0.28-SNAPSHOT (latest trunk).
>            Reporter: Ulrich Romahn
>            Priority: Blocker
>         Attachments: threaddump-1388121261214.tdump
>
>
> I am connecting to a cpp broker via the amqp-1-0-client-jms client and send 
> 1000 simple text messages to a queue on the broker. After that, I am opening 
> a second session to receive those 1000 messages.
> When trying to close the connection (calling connection.close()), the client 
> "hangs". When I look at the broker (qpid-tool, list connection) I am still 
> seeing this connection open.
> Debugging through the code, shows that there is a lock in the class 
> org.apache.qpid.amqp_1_0.client.Sender at the following code in method 
> close():
> ...
>         _session.removeSender(this);
>         _endpoint.setSource(null);
>         _endpoint.detach();
>         _closed = true;
>         synchronized(_endpoint.getLock())
>         {
>             while(!_endpoint.isDetached())
>             {
>                 try
>                 {
>                     _endpoint.getLock().wait();
>                 }
>                 catch (InterruptedException e)
>                 {
>                     throw new SenderClosingException(e);
>                 }
>             }
>         }
> It actually seems to hang at the line " _endpoint.getLock().wait(); "
> NOTE: the exact same code works when running against a Java broker 0.24.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

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

Reply via email to