You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (Jira)" <ji...@apache.org> on 2025/02/22 00:50:00 UTC

[jira] [Reopened] (ARTEMIS-5252) Divert with incorrect filter causes startup failure

     [ https://issues.apache.org/jira/browse/ARTEMIS-5252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Bertram reopened ARTEMIS-5252:
-------------------------------------
      Assignee: Justin Bertram

> Divert with incorrect filter causes startup failure
> ---------------------------------------------------
>
>                 Key: ARTEMIS-5252
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5252
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 2.39.0
>         Environment: ActiveMQ Artemis 2.38,0 - 2.39.0 Linux / Windows
>            Reporter: Aleksandr Milovidov
>            Assignee: Justin Bertram
>            Priority: Minor
>         Attachments: artemis_divert_with_incorrect_filter.log
>
>
> When broker.xml contains a divert with an incorrect filter, ActiveMQ Artemis fails to start.
> Expected behavior: 
> If the divert was created before, keep previous divert settings and start. 
> If the divert was absent, skip creating the divert and start.
> For example, if invalid filter is specified in the queue configuration, it does not lead to a non-operating state of the server. A queue with an incorrect filter is not deployed or not changed.
> Also when we have a primary-backup cluster with replication, if someone accidentally deployed incorrect divert configuration to both servers, it leads to unavailability of the entire cluster after restart of the primary server. Backup broker tries to become a live server but cannot start because of the incorrect configuration.
> Steps to reproduce:
> 1. Create a broker instance. Add to broker.xml:
> {code:java}
> <addresses>
>   <address name="test-source">
>     <anycast/>
>   </address>
>   <address name="test-destination">
>     <anycast>
>       <queue name="test-destination"/>
>     </anycast>
>   </address>
> </addresses>
> <diverts>
>   <divert name="divert-test">
>     <address>test-source</address>
>     <forwarding-address>test-destination</forwarding-address>
>     <exclusive>false</exclusive>
>     <filter string="key='value'"/>
>   </divert>
> </diverts>
> {code}
> 2. Change filter string to something incorrect which does not break xml syntax. For example {{"(key='value'"}}
> When reloading configuration, broker logs an error and continues to work: 
> {code:java}
> ERROR [org.apache.activemq.artemis.core.server] AMQ224006: Invalid filter: (key='value'
> ERROR [org.apache.activemq.artemis.core.server] AMQ224069: Change detected in broker configuration file, but reload failed
> org.apache.activemq.artemis.api.core.ActiveMQInvalidFilterExpressionException: AMQ229020: Invalid filter: (key='value'{code}
> When restarting the broker, it logs:
> {code:java}
> ERROR [org.apache.activemq.artemis.core.server] AMQ224006: Invalid filter: (key='value'
> ERROR [org.apache.activemq.artemis.core.server] AMQ224000: Failure in initialisation 
> {code}
> Full logs are attached: [^artemis_divert_with_incorrect_filter.log]



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@activemq.apache.org
For additional commands, e-mail: issues-help@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact