qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-6994) [Java Broker] AMQP connection close might fail to delete temporary queue after close of VirtualHost
Date Wed, 13 Jan 2016 09:21:39 GMT

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

ASF subversion and git services commented on QPID-6994:
-------------------------------------------------------

Commit 1724375 from [~k-wall] in branch 'java/trunk'
[ https://svn.apache.org/r1724375 ]

QPID-6994: Remove superfluous unregister subscriptions at connection level, this is handled
on all paths at the session level

> [Java Broker] AMQP connection close might fail to delete temporary queue after close
of VirtualHost
> ---------------------------------------------------------------------------------------------------
>
>                 Key: QPID-6994
>                 URL: https://issues.apache.org/jira/browse/QPID-6994
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: qpid-java-6.0, qpid-java-6.1
>            Reporter: Alex Rudyy
>
> With current implementation of AMQPConnection close we invoke VirtualHost#deregisterConnection
first before we invoke AbstractAMQPConnection#performDeleteTasks. As result, Connection configured
object associated with VirtualHost is unregistered before connection deletion task is executed.
If VH is closing at the same time  when connection is closed, it might happen that after call
VirtualHost#deregisterConnection the VH can close immediately and the following call to AbstractAMQPConnection#performDeleteTasks
would fail because queue deletion task cannon be performed on already closed virtual host.
> The problem can manifest either a) during Broker shutdown, b) during a virtual host node
state change (e.g. an operator stopping the virtual host node from the console).  Stopping
the virtual host itself, or a change in mastership during a HA election cannot cause this
problem.
> The exception like the one below is reported in this case:
> {noformat}
> 2016-01-10 21:45:08,765         ERROR [VirtualHostNode-test-Config] o.a.q.s.c.u.TaskExecutorImpl
Task executor VirtualHostNode-test-Config is not in ACTIVE state, unable to execute : Task['set
desired state' on 'Binding{bindingKey=testTopic, exchange=TopicExchange[amq.topic], queue=tmp_127_0_0_1_51683_1,
id= 0c34946e-5e28-4d8c-a84e-50fb77deee03 }' with arguments 'DELETED'] 
> at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.checkState(TaskExecutorImpl.java:225)
> 	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.submitWrappedTask(TaskExecutorImpl.java:147)
> 	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.submit(TaskExecutorImpl.java:142)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject.doOnConfigThread(AbstractConfiguredObject.java:512)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject.setDesiredState(AbstractConfiguredObject.java:1385)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject.deleteAsync(AbstractConfiguredObject.java:2001)
> 	at org.apache.qpid.server.queue.AbstractQueue.deleteAndReturnCountAsync(AbstractQueue.java:1932)
> 	at org.apache.qpid.server.queue.AbstractQueue.doDelete(AbstractQueue.java:3078)
> 	at sun.reflect.GeneratedMethodAccessor238.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject.attainState(AbstractConfiguredObject.java:1239)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject.access$1900(AbstractConfiguredObject.java:78)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject$15.execute(AbstractConfiguredObject.java:1427)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject$15.execute(AbstractConfiguredObject.java:1386)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:520)
> 	at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:513)
> 	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$TaskLoggingWrapper.execute(TaskExecutorImpl.java:270)
> 	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper$1.run(TaskExecutorImpl.java:342)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at javax.security.auth.Subject.doAs(Subject.java:356)
> 	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper.call(TaskExecutorImpl.java:335)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:745)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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


Mime
View raw message