[
https://issues.apache.org/jira/browse/PROTON-2618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17613232#comment-17613232
]
ASF subversion and git services commented on PROTON-2618:
---------------------------------------------------------
Commit f215929395e44a8a0679befe15f96fd95b634c16 in qpid-protonj2's branch
refs/heads/main from Timothy Bish
[ https://gitbox.apache.org/repos/asf?p=qpid-protonj2.git;h=f2159293 ]
PROTON-2618 Better handle remote forced close vs connection drop
Ensure that the receiver doesn't react to remote force close of the
connection if the connection will reconnect to avoid receive calls
unblocking with error when the underlying connection is reconnecting.
> Remote close with [condition = amqp:connection:forced] leads to exception
> thrown even though reconnect is enabled
> -----------------------------------------------------------------------------------------------------------------
>
> Key: PROTON-2618
> URL: https://issues.apache.org/jira/browse/PROTON-2618
> Project: Qpid Proton
> Issue Type: Bug
> Components: protonj2
> Affects Versions: protonj2-1.0.0-M9
> Reporter: Jiri Daněk
> Assignee: Timothy A. Bish
> Priority: Major
>
> According to previous issues in the Qpid Proton and Qpid JMS projects, the
> AMQP clients are supposed to initiate reconnect in this sitiuation.
> * QPIDJMS-395, QPIDJMS-265
> * PROTON-1416, PROTON-1423
> * https://github.com/Azure/amqpnetlite/issues/33
> * (PROTON-2204)
> Instead, I get an exception
> {noformat}
> [15:38:33] [INFO] dtestlib.Test :: stderr:
>
> org.apache.qpid.protonj2.client.exceptions.ClientConnectionRemotelyClosedException:
> Received error from remote peer without description [condition =
> amqp:connection:forced]
> at
> org.apache.qpid.protonj2.client.impl.ClientExceptionSupport.convertToConnectionClosedException(ClientExceptionSupport.java:128)
> at
> org.apache.qpid.protonj2.client.impl.ClientLinkType.handleParentEndpointClosed(ClientLinkType.java:378)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonLink.fireParentEndpointClosed(ProtonLink.java:517)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonLink.handleConnectionLocallyClosed(ProtonLink.java:590)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonSession.lambda$handleConnectionLocallyClosed$1(ProtonSession.java:467)
> at java.base/java.lang.Iterable.forEach(Iterable.java:75)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonSession.handleConnectionLocallyClosed(ProtonSession.java:467)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonConnection.lambda$close$0(ProtonConnection.java:144)
> at java.base/java.lang.Iterable.forEach(Iterable.java:75)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonConnection.close(ProtonConnection.java:144)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonConnection.close(ProtonConnection.java:63)
> at
> org.apache.qpid.protonj2.client.impl.ClientConnection.handleRemoteClose(ClientConnection.java:694)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEndpoint.fireRemoteClose(ProtonEndpoint.java:139)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonConnection.handleClose(ProtonConnection.java:449)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonPerformativeHandler.handleClose(ProtonPerformativeHandler.java:158)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonPerformativeHandler.handleClose(ProtonPerformativeHandler.java:43)
> at org.apache.qpid.protonj2.types.transport.Close.invoke(Close.java:74)
> at
> org.apache.qpid.protonj2.engine.IncomingAMQPEnvelope.invoke(IncomingAMQPEnvelope.java:69)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonPerformativeHandler.handleRead(ProtonPerformativeHandler.java:68)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.invokeHandlerRead(ProtonEngineHandlerContext.java:187)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.fireRead(ProtonEngineHandlerContext.java:147)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonFrameLoggingHandler.handleRead(ProtonFrameLoggingHandler.java:101)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.invokeHandlerRead(ProtonEngineHandlerContext.java:187)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.fireRead(ProtonEngineHandlerContext.java:147)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonFrameDecodingHandler$FrameBodyParsingStage.parse(ProtonFrameDecodingHandler.java:363)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonFrameDecodingHandler$FrameSizeParsingStage.parse(ProtonFrameDecodingHandler.java:259)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonFrameDecodingHandler.handleRead(ProtonFrameDecodingHandler.java:99)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.invokeHandlerRead(ProtonEngineHandlerContext.java:199)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngineHandlerContext.fireRead(ProtonEngineHandlerContext.java:132)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEnginePipeline.fireRead(ProtonEnginePipeline.java:301)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngine.ingest(ProtonEngine.java:227)
> at
> org.apache.qpid.protonj2.engine.impl.ProtonEngine.ingest(ProtonEngine.java:53)
> at
> org.apache.qpid.protonj2.client.impl.ClientTransportListener.transportRead(ClientTransportListener.java:59)
> at
> org.apache.qpid.protonj2.client.transport.TcpTransport$NettyTcpTransportHandler.channelRead0(TcpTransport.java:481)
> at
> org.apache.qpid.protonj2.client.transport.TcpTransport$NettyTcpTransportHandler.channelRead0(TcpTransport.java:471)
> at
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
> at
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499)
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397)
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
> at
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> at java.base/java.lang.Thread.run(Thread.java:829)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]