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 >