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]

Reply via email to