Alex Rudyy created QPID-8244:
--------------------------------
Summary: [Broker-J] Optimize fanout exchange routing functionality
Key: QPID-8244
URL: https://issues.apache.org/jira/browse/QPID-8244
Project: Qpid
Issue Type: Improvement
Components: Broker-J
Affects Versions: qpid-java-broker-7.0.6
Reporter: Alex Rudyy
Fix For: qpid-java-broker-7.1.0, qpid-java-broker-7.0.7
Whilst investigating a performance issue reported as part of QPID-8238 I ran a
java profiler which had detected some performance loss on creation of
intermediate map objects and copying data between intermediate maps in
{{org.apache.qpid.server.exchange.TopicExchangeImpl#getMatchedDestinations}}
and
{{org.apache.qpid.server.exchange.topic.TopicExchangeResult#processMessage(org.apache.qpid.server.filter.Filterable)}}.
Effectively, the routing functionality converts the collection of
TopicMatcherResult got based on message routing key into a map where keys are
route destinations and values are routing/replacement keys. The conversions is
done in {{TopicExchangeImpl#getMatchedDestinations}} using intermediate map
returned from {{TopicExchangeResult#processMessage}} and containing the
destination as a key and routing replacement key as a value. Than, multiple
maps (representing each TopicMatcherResult ) are merged into a single map.
I committed the changes [
https://git-wip-us.apache.org/repos/asf?p=qpid-broker-j.git;h=0510ed3 ]
eliminating the need for intermediate map creation in
{{TopicExchangeResult#processMessage}}. It also simplifies the code.
The commit left the old implementation untouched but marked it as Deprecated in
order to keep public methods unchanged as the next version is minor release
rather major one.
Following [review comments from Keith
Wall|https://issues.apache.org/jira/browse/QPID-8238?focusedCommentId=16610224&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16610224]
I created this JIRA to track exchange changes and reapply the commit
[0510ed3|https://git-wip-us.apache.org/repos/asf?p=qpid-broker-j.git;h=0510ed3]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]