[
https://issues.apache.org/jira/browse/ARTEMIS-2531?focusedWorklogId=334522&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-334522
]
ASF GitHub Bot logged work on ARTEMIS-2531:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 26/Oct/19 11:37
Start Date: 26/Oct/19 11:37
Worklog Time Spent: 10m
Work Description: cshannon commented on issue #2872: ARTEMIS-2531: Fix
filter in FederatedQueue to prevent infinite consumer creation in a circular or
bidrectional setup
URL: https://github.com/apache/activemq-artemis/pull/2872#issuecomment-546594924
@michaelandrepearce - So maybe I didn't explain the original intent of this
as well. The ONLY problem here is that while the existing filter is correct it
does not actually work properly because the SQL92 parsing logic breaks because
the key for FederatedQueueConsumer.FEDERATION_NAME has a hyphen in it as the
key name is `federation-name` Because of the hyphen you have to prefix the key
with hyphenated_props in order for the filter to actually work. That's
it...nothing else is wrong with the filter. The other solution is to simply
change the name of the key to not have a hyphen and problem fixed. This is
just a one line fix.
Take a look at this documentation for filter expressions at the bottom:
https://activemq.apache.org/components/artemis/documentation/latest/filter-expressions.html
> The JMS spec also states that property identifiers (and therefore the
identifiers which are valid for use in a filter expression) are an,
"unlimited-length sequence of letters and digits, the first of which must be a
letter. A letter is any character for which the method Character.isJavaLetter
returns true. This includes _ and $. A letter or digit is any character for
which the method Character.isJavaLetterOrDigit returns true." **This constraint
means that hyphens (i.e. -) cannot be used. However, this constraint can be
overcome by using the hyphenated_props: prefix.For example, if a message had
the foo-bar property set to 0 then the filter expression
hyphenated_props:foo-bar = 0 would match it.**
If you are still confused or don't quite get what I am talking about I
encourage you to run my updated test with and without the fix and you can see
what I mean. Without the fix the brokers will create infinite numbers of
consumers because the filter is ignored because of the hyphen. With the fix
everything works as originally intended. If you use break points in the
debugger you will see the expression get evaluated to false even though it
should be true and not work right.
So again, I'm NOT trying to change the original intent..Im simply trying to
actually fix what's supposed to already be there. The original filter is
correct and will work as intended if the parser can actually handled the hyphen.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 334522)
Time Spent: 2.5h (was: 2h 20m)
> FederatedQueue has invalid filter string leading to an infinite consumer loop
> -----------------------------------------------------------------------------
>
> Key: ARTEMIS-2531
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2531
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker
> Affects Versions: 2.10.1
> Reporter: Christopher L. Shannon
> Assignee: Christopher L. Shannon
> Priority: Major
> Fix For: 2.11.0
>
> Time Spent: 2.5h
> Remaining Estimate: 0h
>
> FederatedQueue by default is supposed to set a metadataFilter to will exclude
> reacting to federated consumers so a loop isn't created. Unfortunately the
> filter does not work because there is a hyphen in the name so it gets
> ignored. The property needs to be prefixed with "hyphenated_props:" for the
> filter to work. Currently an infinite loop and consumers will be rapidly
> created until crashing the broker unless the filter is fixed (if using by
> directional federated queues)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)