Just to follow-up...

ARTEMIS-4910 [1] was opened for this, and I've sent a PR to fix the issue.
The fix will be in 2.36.0.


Justin

[1] https://issues.apache.org/jira/browse/ARTEMIS-4910

On Thu, Jun 27, 2024 at 7:21 AM Кирилл Чадакин <kirill.chada...@gmail.com>
wrote:

> Hello,
>
> I have Artemis ActiveMQ 2.31.2 with replication and a divert feature that
> includes a custom transformer. When I modify the divert configuration on
> the primary server, an exception occurs, leading to disconnection between
> the master and the slave. Subsequently, quorum voting is initiated,
> following which normal operations are restored, with the backup taking
> over.
>
> The exception log:
> 2024-05-24 09:59:45,485 ERROR [org.apache.activemq.artemis.core.client]
> AMQ214013: Failed to decode packet java.lang.IndexOutOfBoundsException:
> readerIndex(28) + length(358) exceeds writerIndex(382):
> PooledUnsafeDirectByteBuf(ridx: 28, widx: 382, cap: 382)
> at
>
> io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442)
> at
>
> io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1428)
> at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:895)
> at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:903)
> at io.netty.buffer.WrappedByteBuf.readBytes(WrappedByteBuf.java:657)
> at
>
> org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readBytes(ChannelBufferWrapper.java:310)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationAddMessage.decodeRest(ReplicationAddMessage.java:113)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.decode(PacketImpl.java:385)
> at
>
> org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.slowPathDecode(ServerPacketDecoder.java:292)
> at
>
> org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.decode(ServerPacketDecoder.java:156)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:376)
> at
>
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1355)
> at
>
> org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:73)
> 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.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1471)
> at
> io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1334)
> at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1383)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
> 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:1410)
> 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:919)
> at
>
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509)
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407)
> at
>
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
> at
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> at
>
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
> 2024-05-24 09:59:45,492 ERROR [org.apache.activemq.artemis.core.client]
> AMQ214031: Failed to decode buffer, disconnect immediately.
> java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException:
> readerIndex(28) + length(358) exceeds writerIndex(382):
> PooledUnsafeDirectByteBuf(ridx: 28, widx: 382, cap: 382)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:387)
> at
>
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1355)
> at
>
> org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:73)
> 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.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1471)
> at
> io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1334)
> at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1383)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
> at
>
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
> at
>
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
> 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:1410)
> 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:919)
> at
>
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509)
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407)
> at
>
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
> at
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> at
>
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> Caused by: java.lang.IndexOutOfBoundsException: readerIndex(28) +
> length(358) exceeds writerIndex(382): PooledUnsafeDirectByteBuf(ridx: 28,
> widx: 382, cap: 382)
> at
>
> io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442)
> at
>
> io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1428)
> at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:895)
> at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:903)
> at io.netty.buffer.WrappedByteBuf.readBytes(WrappedByteBuf.java:657)
> at
>
> org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readBytes(ChannelBufferWrapper.java:310)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationAddMessage.decodeRest(ReplicationAddMessage.java:113)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.decode(PacketImpl.java:385)
> at
>
> org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.slowPathDecode(ServerPacketDecoder.java:292)
> at
>
> org.apache.activemq.artemis.core.protocol.ServerPacketDecoder.decode(ServerPacketDecoder.java:156)
> at
>
> org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:376)
> ... 29 more
>
> Has anyone encountered such a problem? Are there any ways to solve it?
>
> --
> best regards,
> Kirill Chadakin
>

Reply via email to