[ 
https://issues.apache.org/jira/browse/ARTEMIS-5605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18011298#comment-18011298
 ] 

ASF subversion and git services commented on ARTEMIS-5605:
----------------------------------------------------------

Commit 36b966de3250128dc045ae39baa10474f17c8dec in activemq-artemis's branch 
refs/heads/main from Timothy Bish
[ https://gitbox.apache.org/repos/asf?p=activemq-artemis.git;h=36b966de32 ]

ARTEMIS-5605 Use correct reference to proton receiver in initialize

When initializing bridge and federation receiver links use the correct
reference to the proton Receiver when validating capabilities to ensure
it cannot be null if the bridge or federation receiver link is closed
before the remote attach arrives.

> AMQP Bridge and Federation receivers can NPE if closed before remote Attach 
> arrives
> -----------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-5605
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5605
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.42.0
>            Reporter: Timothy A. Bish
>            Assignee: Timothy A. Bish
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 2.43.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> In a rare case if the bridge or federation receiver is closed on the server 
> before the remote peer sends the remote attach an NPE can result because the 
> wrong view of the proton Receiver instance is used to check remote desired 
> capabilities which can be null after the local close is called.
> {code:java}
> [Thread-0 (ActiveMQ-client-netty-threads)] 21:36:36,119 WARN  
> [org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnection] 
> Cannot invoke 
> "org.apache.qpid.proton.engine.Link.getRemoteDesiredCapabilities()" because 
> "link" is null
> java.lang.NullPointerException: Cannot invoke 
> "org.apache.qpid.proton.engine.Link.getRemoteDesiredCapabilities()" because 
> "link" is null
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport.verifyDesiredCapability(AmqpSupport.java:252)
>     at 
> org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeFromQueueReceiver$AMQPBridgeQueueDeliveryReceiver.initialize(AMQPBridgeFromQueueReceiver.java:304)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.AMQPSessionContext.addReceiver(AMQPSessionContext.java:498)
>     at 
> org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeFromQueueReceiver.lambda$doCreateReceiver$2(AMQPBridgeFromQueueReceiver.java:174)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.remoteLinkOpened(AMQPConnectionContext.java:416)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.onRemoteOpen(AMQPConnectionContext.java:884)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.handler.Events.dispatch(Events.java:68)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.dispatch(ProtonHandler.java:584)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.handleFlush(ProtonHandler.java:390)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.flush(ProtonHandler.java:375)
>     at 
> org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:333)
>     at 
> org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionChannelHandler.channelRead(AMQPBrokerConnectionChannelHandler.java:81)
>     at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
>     at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
>     at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
>     at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
>     at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
>     at 
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
>     at 
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501)
>     at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399)
>     at 
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
>     at 
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>     at 
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120)
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to