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

Keith Wall commented on QPID-7261:
----------------------------------

I can't reproduce this problem on trunk and the future wiring looks good to me. 
 Deleting a VHN organises for the virtualhost to be deleted 
({{AVHN#deleteVirtualHostIfExists}}).  Deleting the VH first closes the 
connections and disassociates them from the VH.   The delete of VH should not 
be able to complete until all connections are closed and disassociated.  
Furthermore, the association of a new connection takes place in the same thread 
as the close/disassociation, so there should be no way a new connection can get 
registered at an inopportune moment during the virtualhost delete and somehow 
get forgotten.

I played around trying to force a failure by opening connections in a loop 
whilst deleting the VHN without success.

> [Java Broker] Deletion of virtual host node does not close active connections
> -----------------------------------------------------------------------------
>
>                 Key: QPID-7261
>                 URL: https://issues.apache.org/jira/browse/QPID-7261
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: qpid-java-6.0, qpid-java-6.1
>            Reporter: Alex Rudyy
>             Fix For: qpid-java-6.1
>
>
> Deletion of virtual host node does not close active connections on virtual 
> host. If not closed connection is attempted to be closed from client side 
> Broker crashes with exception like the one below:
> {noformat}
> ########################################################################
> #
> # Unhandled Exception java.lang.IllegalStateException: Task executor 
> VirtualHostNode-test-Config is not in ACTIVE state in Thread 
> IO-/127.0.0.1:52792
> #
> # Exiting
> #
> ########################################################################
> java.lang.IllegalStateException: Task executor VirtualHostNode-test-Config is 
> not in ACTIVE state
>       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:554)
>       at 
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.deregisterConnectionAsync(AbstractVirtualHost.java:1808)
>       at 
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.deregisterConnection(AbstractVirtualHost.java:1803)
>       at 
> org.apache.qpid.server.protocol.v0_8.AMQPConnection_0_8.closed(AMQPConnection_0_8.java:716)
>       at 
> org.apache.qpid.server.transport.MultiVersionProtocolEngine.closed(MultiVersionProtocolEngine.java:114)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.shutdown(NonBlockingConnection.java:405)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:328)
>       at 
> org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:124)
>       at 
> org.apache.qpid.server.transport.SelectorThread$ConnectionProcessor.processConnection(SelectorThread.java:504)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.performSelect(SelectorThread.java:337)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.run(SelectorThread.java:87)
>       at 
> org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:462)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> {noformat}
> {noformat}
> ########################################################################
> #
> # Unhandled Exception java.lang.IllegalStateException: Task executor 
> VirtualHostNode-test-Config is not in ACTIVE state in Thread 
> IO-/127.0.0.1:54390
> #
> # Exiting
> #
> ########################################################################
> java.lang.IllegalStateException: Task executor VirtualHostNode-test-Config is 
> not in ACTIVE state
>       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:554)
>       at 
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.deregisterConnectionAsync(AbstractVirtualHost.java:1808)
>       at 
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.deregisterConnection(AbstractVirtualHost.java:1803)
>       at 
> org.apache.qpid.server.protocol.v0_8.AMQPConnection_0_8.closed(AMQPConnection_0_8.java:716)
>       at 
> org.apache.qpid.server.transport.MultiVersionProtocolEngine.closed(MultiVersionProtocolEngine.java:114)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.shutdown(NonBlockingConnection.java:405)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:328)
>       at 
> org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:124)
>       at 
> org.apache.qpid.server.transport.SelectorThread$ConnectionProcessor.processConnection(SelectorThread.java:504)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.performSelect(SelectorThread.java:337)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.run(SelectorThread.java:87)
>       at 
> org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:462)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> May 12, 2016 5:42:10 PM com.google.common.util.concurrent.ExecutionList 
> executeListener
> SEVERE: RuntimeException while executing runnable 
> com.google.common.util.concurrent.Futures$6@2753af0 with executor 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl@4af6535b
> java.lang.NullPointerException
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor.execute(TaskExecutorImpl.java:427)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl.execute(TaskExecutorImpl.java:172)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> com.google.common.util.concurrent.Futures$ChainingListenableFuture$1.run(Futures.java:918)
>       at 
> com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
>       at 
> com.google.common.util.concurrent.Futures$ImmediateFuture.addListener(Futures.java:106)
>       at 
> com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:914)
>       at 
> com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> com.google.common.util.concurrent.Futures$CombinedFuture.setOneValue(Futures.java:1764)
>       at 
> com.google.common.util.concurrent.Futures$CombinedFuture.access$400(Futures.java:1608)
>       at 
> com.google.common.util.concurrent.Futures$CombinedFuture$2.run(Futures.java:1686)
>       at 
> com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$2$1.onSuccess(AbstractConfiguredObject.java:567)
>       at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
>       at 
> com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$ChainedSettableFuture.set(AbstractConfiguredObject.java:2202)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$18.onSuccess(AbstractConfiguredObject.java:2160)
>       at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor.execute(TaskExecutorImpl.java:422)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl.execute(TaskExecutorImpl.java:172)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$ChainedSettableFuture.set(AbstractConfiguredObject.java:2202)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$19$1.onSuccess(AbstractConfiguredObject.java:2257)
>       at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor.execute(TaskExecutorImpl.java:422)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl.execute(TaskExecutorImpl.java:172)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.add(ExecutionList.java:101)
>       at 
> com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:170)
>       at 
> com.google.common.util.concurrent.Futures.addCallback(Futures.java:1322)
>       at 
> org.apache.qpid.server.model.AbstractConfiguredObject$19.onSuccess(AbstractConfiguredObject.java:2252)
>       at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor.execute(TaskExecutorImpl.java:422)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl.execute(TaskExecutorImpl.java:172)
>       at 
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
>       at 
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
>       at 
> com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
>       at 
> org.apache.qpid.server.transport.AbstractAMQPConnection$1.run(AbstractAMQPConnection.java:155)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor$1$1.run(TaskExecutorImpl.java:437)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor$1$1.run(TaskExecutorImpl.java:433)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at javax.security.auth.Subject.doAs(Subject.java:360)
>       at 
> org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor$1.run(TaskExecutorImpl.java:432)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> {noformat}



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

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

Reply via email to