You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (JIRA)" <ji...@apache.org> on 2018/03/07 13:17:00 UTC

[jira] [Assigned] (ARTEMIS-1707) [openwire] error on create of queue if another connection creates one of the same name

     [ https://issues.apache.org/jira/browse/ARTEMIS-1707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Bertram reassigned ARTEMIS-1707:
---------------------------------------

    Assignee: Timothy Bish

> [openwire] error on create of queue if another connection creates one of the same name
> --------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-1707
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1707
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: OpenWire
>    Affects Versions: 2.4.0
>         Environment: OpenWire protocol head using ActiveMQ JMS client
>            Reporter: Timothy Bish
>            Assignee: Timothy Bish
>            Priority: Major
>             Fix For: 2.5.0
>
>
> 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:
> {noformat}
> 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
> {noformat}
> 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.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)