This was caused by ARTEMIS-4582 [1]. I've opened ARTEMIS-4742 [2] and sent
a PR [3] to address the problem.

To be clear, this has nothing to do with replication or load/throughput.
It's just a buffer formatting issue caused by a configuration change.


Justin

[1] https://issues.apache.org/jira/browse/ARTEMIS-4582
[2] https://issues.apache.org/jira/browse/ARTEMIS-4742
[3] https://github.com/apache/activemq-artemis/pull/4904

On Thu, Apr 18, 2024 at 7:15 AM MILOVIDOV Aleksandr
<aleksandr.milovi...@raiffeisen.ru.invalid> wrote:

> Hi All,
>
> We have faced problem when upgrading one of ActiveMQ Artemis servers from
> 2.32.0 to 2.33.0.
> Artemis cannot start and writes an error to the log:
>
> 2024-04-18 13:31:44,975 ERROR [org.apache.activemq.artemis.core.server]
> AMQ224000: Failure in initialisation
> java.lang.IndexOutOfBoundsException: readerIndex(82) + length(1) exceeds
> writerIndex(82): UnpooledHeapByteBuf(ridx: 82, widx: 82, cap: 82/82)
>         at
> io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442)
> ~[netty-buffer-4.1.107.Final.jar:4.1.107.Final]
>         at
> io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:730)
> ~[netty-buffer-4.1.107.Final.jar:4.1.107.Final]
>         at
> io.netty.buffer.WrappedByteBuf.readByte(WrappedByteBuf.java:529)
> ~[netty-buffer-4.1.107.Final.jar:4.1.107.Final]
>         at
> org.apache.activemq.artemis.api.core.SimpleString.readNullableSimpleString(SimpleString.java:150)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readNullableSimpleString(ChannelBufferWrapper.java:79)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.persistence.config.PersistedSecuritySetting.decode(PersistedSecuritySetting.java:255)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.newSecurityRecord(AbstractJournalStorageManager.java:2127)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.lambda$loadBindingJournal$5(AbstractJournalStorageManager.java:1640)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.collections.SparseArrayLinkedList$SparseArray.clear(SparseArrayLinkedList.java:114)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.collections.SparseArrayLinkedList.clearSparseArrayList(SparseArrayLinkedList.java:173)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.collections.SparseArrayLinkedList.clear(SparseArrayLinkedList.java:227)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.loadBindingJournal(AbstractJournalStorageManager.java:1613)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.loadJournals(ActiveMQServerImpl.java:3856)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart2(ActiveMQServerImpl.java:3489)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.impl.ReplicationPrimaryActivation.run(ReplicationPrimaryActivation.java:145)
> [artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:738)
> [artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:628)
> [artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:66)
> [artemis-cli-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:130)
> [artemis-cli-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:221)
> [artemis-cli-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:167)
> [artemis-cli-2.33.0.jar:2.33.0]
>         at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method) ~[?:?]
>         at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> ~[?:?]
>         at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
>         at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> ~[?:?]
>         at
> org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:157)
> [artemis-boot.jar:2.33.0]
>         at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:64)
> [artemis-boot.jar:2.33.0]
>
> and warning:
>
> 2024-04-18 13:31:45,977 WARN
> [org.apache.activemq.artemis.utils.actors.OrderedExecutor] Server locator
> is closed (maybe it was garbage collected)
> java.lang.IllegalStateException: Server locator is closed (maybe it was
> garbage collected)
>         at
> org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.assertOpen(ServerLocatorImpl.java:1906)
> ~[artemis-core-client-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:678)
> ~[artemis-core-client-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:579)
> ~[artemis-core-client-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:558)
> ~[artemis-core-client-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.core.server.cluster.ClusterController$ConnectRunnable.run(ClusterController.java:501)
> ~[artemis-server-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> ~[artemis-commons-2.33.0.jar:2.33.0]
>         at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> [?:?]
>         at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> [?:?]
>         at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> [artemis-commons-2.33.0.jar:2.33.0]
>
> It can start with new version only if we remove all existing data from
> Artemis instance data directory.
> Also we have exported all data from this non-working instance with version
> 2.33.0 using artemis data exp utility, and imported to another instance
> with version 2.33.0, and it has been started successfully.
> Artemis is configured using primary/backup replication with pluggable
> quorum.
> We have also successfully upgraded several other instances of Artemis
> which has smaller number of producers/consumers and lower throughput.
>
> --
> Best regards,
> Aleksandr
>
>
>
> -----------------------------------
>
> This message and any attachment are confidential and may be privileged or
> otherwise protected from disclosure. If you are not the intended recipient
> any use, distribution, copying or disclosure is strictly prohibited. If you
> have received this message in error, please notify the sender immediately
> either by telephone or by e-mail and delete this message and any attachment
> from your system. Correspondence via e-mail is for information purposes
> only. AO Raiffeisenbank neither makes nor accepts legally binding
> statements by e-mail unless otherwise agreed.
>
> -----------------------------------
>

Reply via email to