Details
Description
When two OpenWire client resources (Producer or Consumer) attempt to create a Queue destination (generally from two different connections) at the same time the following exception can be seen:
java.lang.RuntimeException: javax.jms.JMSException: org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException: AMQ119018: Binding already exists LocalQueueBinding [address=q2, queue=QueueImpl[name=q2, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=5e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2], temp=false]@6ca8009b, filter=null, name=q2, clusterName=q25e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2] at net.ssorj.quiver.Client.run(QuiverArrowJms.java:126) at net.ssorj.quiver.QuiverArrowJms.doMain(QuiverArrowJms.java:67) at net.ssorj.quiver.QuiverArrowJms.main(QuiverArrowJms.java:29) Caused by: javax.jms.JMSException: org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException: AMQ119018: Binding already exists LocalQueueBinding [address=q2, queue=QueueImpl[name=q2, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=5e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2], temp=false]@6ca8009b, filter=null, name=q2, clusterName=q25e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2] at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1399) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1428) at org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:2086) at org.apache.activemq.ActiveMQMessageProducer.<init>(ActiveMQMessageProducer.java:124) at org.apache.activemq.ActiveMQSession.createProducer(ActiveMQSession.java:1117) at net.ssorj.quiver.Client.sendMessages(QuiverArrowJms.java:136) at net.ssorj.quiver.Client.run(QuiverArrowJms.java:113) ... 2 more Caused by: java.lang.Throwable: org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException: AMQ119018: Binding already exists LocalQueueBinding [address=q2, queue=QueueImpl[name=q2, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=5e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2], temp=false]@6ca8009b, filter=null, name=q2, clusterName=q25e9fa4c0-1bf8-11e8-ada3-2c56dc3896a2] at org.apache.activemq.artemis.core.postoffice.impl.SimpleAddressManager.addBinding(SimpleAddressManager.java:85) at org.apache.activemq.artemis.core.postoffice.impl.WildcardAddressManager.addBinding(WildcardAddressManager.java:90) at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.addBinding(PostOfficeImpl.java:599) at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createQueue(ActiveMQServerImpl.java:2765) at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createQueue(ActiveMQServerImpl.java:1676) at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.createQueue(ServerSessionImpl.java:588) at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.createQueue(ServerSessionImpl.java:668) at org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.addDestination(OpenWireConnection.java:768) at org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processAddProducer(OpenWireConnection.java:1086) at org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:108) at org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.bufferReceived(OpenWireConnection.java:289) at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:646) at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886) at java.lang.Thread.run(Thread.java:748) quiver-arrow: Error: Sender exited with code 1
This appears to be a race that should be handled in the protocol head if the requested address being created springs into existence by a similar request by another client.
Attachments
Issue Links
- duplicates
-
ARTEMIS-1608 OpenWire throws AMQ119018: Binding already exists
- Closed
- links to