-
Bug
-
Resolution: Done
-
Blocker
-
AMQ 7.8.2.GA
ProtonServerSenderContext checks for a closed endpoint before sending a normal message but does not check before sending a Large message (ProtonServerSenderContext$LargeMessageDeliveryContext::deliver()), resulting in an IllegalStateException bubbling up from the client:
2021-08-13 10:50:45,734 WARN [org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext] send not allowed after the sender is closed.: java.lang.IllegalStateException: send not allowed after the sender is closed. at org.apache.qpid.proton.engine.impl.SenderImpl.send(SenderImpl.java:67) [proton-j-0.33.6.redhat-00001.jar:0.33.6.redhat-00001] at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$LargeMessageDeliveryContext.deliver(ProtonServerSenderContext.java:602) [artemis-amqp-protocol-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.runNow(ProtonHandler.java:346) [artemis-amqp-protocol-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.runNow(AMQPConnectionContext.java:275) [artemis-amqp-protocol-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$LargeMessageDeliveryContext.resume(ProtonServerSenderContext.java:561) [artemis-amqp-protocol-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnection.lambda$fireReady$0(NettyConnection.java:183) [artemis-core-client-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at java.util.ArrayList.forEach(ArrayList.java:1255) [rt.jar:1.8.0_151] at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnection.fireReady(NettyConnection.java:181) [artemis-core-client-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor$Listener.connectionReadyForWrites(NettyAcceptor.java:1006) [artemis-server-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelWritabilityChanged(ActiveMQChannelHandler.java:65) [artemis-core-client-2.16.0.redhat-00022.jar:2.16.0.redhat-00022] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelWritabilityChanged(AbstractChannelHandlerContext.java:441) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelWritabilityChanged(AbstractChannelHandlerContext.java:428) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.AbstractChannelHandlerContext.fireChannelWritabilityChanged(AbstractChannelHandlerContext.java:421) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelWritabilityChanged(DefaultChannelPipeline.java:1433) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelWritabilityChanged(AbstractChannelHandlerContext.java:441) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelWritabilityChanged(AbstractChannelHandlerContext.java:428) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.DefaultChannelPipeline.fireChannelWritabilityChanged(DefaultChannelPipeline.java:931) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.ChannelOutboundBuffer.fireChannelWritabilityChanged(ChannelOutboundBuffer.java:628) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.ChannelOutboundBuffer.setWritable(ChannelOutboundBuffer.java:594) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.ChannelOutboundBuffer.decrementPendingOutboundBytes(ChannelOutboundBuffer.java:196) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:273) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(AbstractEpollStreamChannel.java:305) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(AbstractEpollStreamChannel.java:510) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:422) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:953) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:570) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:470) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.63.Final-redhat-00001.jar:4.1.63.Final-redhat-00001] at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.16.0.redhat-00022.jar:2.16.0.redhat-00022]
Following this, the broker logs an "AMQ222151: removing consumer which did not handle a message" warning.
- is cloned by
-
ENTMQBR-5384 [LTS]Proton LargeMessageDeliveryContext doesn't check for closed connection / sender before attempting to send
- Closed