You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ulrich Romahn (JIRA)" <ji...@apache.org> on 2013/12/20 02:08:06 UTC

[jira] [Updated] (QPID-5439) [AMQP 1.0 JMS client] Client hangs during connection.close()

     [ https://issues.apache.org/jira/browse/QPID-5439?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ulrich Romahn updated QPID-5439:
--------------------------------

    Description: 
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.

  was:
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);
                }
            }
        }

NOTE: the exact same code works when running against a Java broker 0.24.


> [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
>
> 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.4#6159)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org