[ https://issues.apache.org/jira/browse/QPID-3601?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Keith Wall resolved QPID-3601. ------------------------------ Resolution: Fixed Pacth applied > Failure to delete queue on a broker shutdown > -------------------------------------------- > > Key: QPID-3601 > URL: https://issues.apache.org/jira/browse/QPID-3601 > Project: Qpid > Issue Type: Bug > Components: Java Broker > Affects Versions: 0.15 > Reporter: Alex Rudyy > > When slow consumer policy is configured and slow consumer is detected the > policy fails to delete queue on broker shutdown. > The registry can be destroyed in a shutdown thread and queue > SimpleAMQQueue#reconfigure fails to reconfigure queue. > As result of it the broker is not shut down and some threads remain running. > The following exception stack trace demonstrates the issue > {noformat} > main 2011-11-09 11:20:47,423 INFO [qpid.test.utils.InternalBrokerHolder] > Shutting down Broker instance > main 2011-11-09 11:20:47,423 INFO [qpid.server.registry.ApplicationRegistry] > Shutting down > ApplicationRegistry(org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry@6c28aeba) > IoReceiver - /127.0.0.1:56171 2011-11-09 11:20:47,423 DEBUG > [server.configuration.plugins.ConfigurationPlugin] For 'policy' found > handlers (1):[ > SlowConsumerDetectionPolicyConfiguration=[ (Policy:TopicDelete)] > ] > main 2011-11-09 11:20:47,423 INFO [qpid.server.registry.ApplicationRegistry] > Shutting down > ApplicationRegistry:org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry@6c28aeba > main 2011-11-09 11:20:47,424 INFO [qpid.message.broker.shutting_down] > [Broker] BRK-1003 : Shuting down : TCP port 15672 > main 2011-11-09 11:20:47,424 DEBUG > [qpid.server.connection.ConnectionRegistry] Closing connection registry :0 > connections. > IoReceiver - /127.0.0.1:56171 2011-11-09 11:20:47,424 ERROR > [apache.qpid.thread.LoggingUncaughtExceptionHandler] Uncaught exception in > thread "IoReceiver - /127.0.0.1:56171" > java.lang.IllegalStateException: No ApplicationRegistry has been initialised > at > org.apache.qpid.server.registry.ApplicationRegistry.getInstance(ApplicationRegistry.java:425) > at > org.apache.qpid.server.configuration.plugins.SlowConsumerDetectionQueueConfiguration.validateConfiguration(SlowConsumerDetectionQueueConfiguration.java:100) > at > org.apache.qpid.server.configuration.plugins.ConfigurationPlugin.setConfiguration(ConfigurationPlugin.java:144) > at > org.apache.qpid.server.configuration.plugins.SlowConsumerDetectionQueueConfiguration$SlowConsumerDetectionQueueConfigurationFactory.newInstance(SlowConsumerDetectionQueueConfiguration.java:46) > at > org.apache.qpid.server.configuration.ConfigurationManager.getConfigurationPlugins(ConfigurationManager.java:47) > at > org.apache.qpid.server.configuration.plugins.ConfigurationPlugin.offerRemainingConfigurationToOtherPlugins(ConfigurationPlugin.java:172) > at > org.apache.qpid.server.configuration.plugins.ConfigurationPlugin.setConfiguration(ConfigurationPlugin.java:142) > at > org.apache.qpid.server.configuration.VirtualHostConfiguration.getQueueConfiguration(VirtualHostConfiguration.java:232) > at > org.apache.qpid.server.queue.SimpleAMQQueue.reconfigure(SimpleAMQQueue.java:522) > at > org.apache.qpid.server.queue.SimpleAMQQueue.removeBinding(SimpleAMQQueue.java:545) > at > org.apache.qpid.server.binding.BindingFactory.removeBinding(BindingFactory.java:252) > at > org.apache.qpid.server.binding.BindingFactory.removeBinding(BindingFactory.java:221) > at > org.apache.qpid.server.queue.SimpleAMQQueue.delete(SimpleAMQQueue.java:1364) > at > org.apache.qpid.server.transport.ServerSessionDelegate$2.doTask(ServerSessionDelegate.java:1020) > at > org.apache.qpid.server.transport.ServerSession.onClose(ServerSession.java:361) > at > org.apache.qpid.server.transport.ServerSessionDelegate.closed(ServerSessionDelegate.java:1267) > at org.apache.qpid.transport.Session.closed(Session.java:1054) > at org.apache.qpid.transport.Connection.closed(Connection.java:551) > at > org.apache.qpid.server.transport.ServerConnection.closed(ServerConnection.java:408) > at > org.apache.qpid.transport.network.Assembler.closed(Assembler.java:110) > at > org.apache.qpid.transport.network.InputHandler.closed(InputHandler.java:202) > at > org.apache.qpid.server.protocol.ProtocolEngine_0_10.closed(ProtocolEngine_0_10.java:196) > at > org.apache.qpid.server.protocol.MultiVersionProtocolEngine.closed(MultiVersionProtocolEngine.java:95) > at > org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:173) > at java.lang.Thread.run(Thread.java:662) > {noformat} > The simplest work around solution here would be an adding of check into > reconfigure method to check if queue is closed and skip reconfigure step. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:dev-subscr...@qpid.apache.org