-
Bug
-
Resolution: Not a Bug
-
Major
-
None
-
AMQ 7.11.1.GA
-
None
-
False
-
None
-
False
-
-
-
-
-
Important
In a configuration with a multicast address with queues with predefined filters:
<address name="TEST.A.0"> <multicast> <queue name="TEST.Q.0"> <filter string="Label LIKE 'TEST%'"/> </queue> <queue name="TEST.Q.1"> <filter string="Label LIKE 'CHEESE%'"/> </queue> <queue name="TEST.Q.2"> <filter string="Label LIKE 'HAM%'"/> </queue> <queue name="TEST.Q.3"> <filter string="Label LIKE 'ALLOW%'"/> </queue> <queue name="TEST.Q.4"> </queue> </multicast> </address>
If a consumer is defined for one of the subqueues with a more specific filter - for example a consumer on TEST.A.0::TEST.Q.0 with filter (Label LIKE 'TEST12345') and them matching messages are sent into the address (with property Label = 'TEST12345'), then the following exceptions are observed repeatedly in the logs:
2023-07-29 17:22:36,579 WARN [org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler] Queue: TEST.Q.0 filter mismatch [Label LIKE 'TEST12345'] is different than existing filter [Label LIKE 'TEST%'] org.apache.activemq.artemis.api.core.ActiveMQIllegalStateException: Queue: TEST.Q.0 filter mismatch [Label LIKE 'TEST12345'] is different than existing filter [Label LIKE 'TEST%'] at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$DefaultController.getMatchingQueue(ProtonServerSenderContext.java:1305) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$DefaultController.init(ProtonServerSenderContext.java:1178) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.initialize(ProtonServerSenderContext.java:288) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPSessionContext.addSender(AMQPSessionContext.java:190) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPSessionContext.addSender(AMQPSessionContext.java:185) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPSessionContext.addSender(AMQPSessionContext.java:178) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.remoteLinkOpened(AMQPConnectionContext.java:396) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.onRemoteOpen(AMQPConnectionContext.java:711) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.handler.Events.dispatch(Events.java:68) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.dispatch(ProtonHandler.java:565) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.flush(ProtonHandler.java:361) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:318) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:242) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:134) ~[artemis-amqp-protocol-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:691) ~[artemis-server-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:73) ~[artemis-core-client-2.28.0.redhat-00004.jar:2.28.0.redhat-00004] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[netty-transport-classes-epoll-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[netty-transport-classes-epoll-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.86.Final-redhat-00002.jar:4.1.86.Final-redhat-00002] at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) ~[artemis-commons-2.28.0.redhat-00004.jar:?]
This behavior started with AMQ 7.11.1. In AMQ 7.11.0, the behavior is as expected and matching messages are delivered to the consumer.