You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Mike Hearn (JIRA)" <ji...@apache.org> on 2016/12/20 14:30:58 UTC
[jira] [Created] (ARTEMIS-897) Shutdown race between
ServerSessionImpl::TempQueueCleanerUpper and server shutdown
Mike Hearn created ARTEMIS-897:
----------------------------------
Summary: Shutdown race between ServerSessionImpl::TempQueueCleanerUpper and server shutdown
Key: ARTEMIS-897
URL: https://issues.apache.org/jira/browse/ARTEMIS-897
Project: ActiveMQ Artemis
Issue Type: Bug
Affects Versions: 1.5.0
Reporter: Mike Hearn
If a client that created a transient queue is disconnecting in parallel with the broker shutting down, then destroyQueue() can be called whilst stop() is in progress or has already completed, resulting in a NullPointerException:
[ERROR] 14:21:08.620 [Thread-5 (activemq-netty-threads-54254849)] server.run - AMQ224048: Failed to remove temporary queue clients.test.rpc.6093900836534386099
java.lang.NullPointerException
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.destroyQueue(ActiveMQServerImpl.java:1566) ~[artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.destroyQueue(ActiveMQServerImpl.java:1556) ~[artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl$TempQueueCleanerUpper.run(ServerSessionImpl.java:588) [artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl$TempQueueCleanerUpper.connectionClosed(ServerSessionImpl.java:612) [artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.spi.core.protocol.AbstractRemotingConnection.callClosingListeners(AbstractRemotingConnection.java:87) [artemis-core-client-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.fail(RemotingConnectionImpl.java:209) [artemis-core-client-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.spi.core.protocol.AbstractRemotingConnection.fail(AbstractRemotingConnection.java:214) [artemis-core-client-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl.connectionDestroyed(RemotingServiceImpl.java:541) [artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor$Listener.connectionDestroyed(NettyAcceptor.java:696) [artemis-server-1.4.0.jar:1.4.0]
at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelInactive(ActiveMQChannelHandler.java:75) [artemis-core-client-1.4.0.jar:1.4.0]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:250) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:236) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:229) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:360) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:325) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:250) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:236) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:229) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:360) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:325) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:723) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:250) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:236) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:229) [netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelIn
destroyQueue should probably be checking if the server is still running?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)