[ 
https://issues.apache.org/jira/browse/ARTEMIS-4814?focusedWorklogId=923950&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-923950
 ]

ASF GitHub Bot logged work on ARTEMIS-4814:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 18/Jun/24 19:38
            Start Date: 18/Jun/24 19:38
    Worklog Time Spent: 10m 
      Work Description: joshb1050 commented on code in PR #4972:
URL: https://github.com/apache/activemq-artemis/pull/4972#discussion_r1644955884


##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/SimpleAddressManager.java:
##########
@@ -100,6 +104,11 @@ public boolean addBinding(final Binding binding) throws 
Exception {
       if (nameMap.putIfAbsent(binding.getUniqueName(), bindingAddressPair) != 
null) {
          throw ActiveMQMessageBundle.BUNDLE.bindingAlreadyExists(binding);
       }
+      directBindingMap.compute(binding.getAddress(), (key, value) -> {
+         Collection<Binding> bindingList = value == null ? new ArrayList<>() : 
value;
+         bindingList.add(binding);

Review Comment:
   The `directBindingMap` is a `ConcurrentHashMap` so it will guarantee thread 
safety on the `compute` by locking the node. 
https://stackoverflow.com/a/59601136
   
   Also, this should be tested already via 
`WildcardAddressManagerUnitTest#testConcurrentCalls`.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 923950)
    Time Spent: 3h 10m  (was: 3h)

> Remove linear iteration to get direct bindings
> ----------------------------------------------
>
>                 Key: ARTEMIS-4814
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4814
>             Project: ActiveMQ Artemis
>          Issue Type: Task
>          Components: Broker
>            Reporter: Josh Byster
>            Priority: Minor
>          Time Spent: 3h 10m
>  Remaining Estimate: 0h
>
> Currently, with 500K+ queues, the cleanup step of {{TempQueueCleanerUpper}} 
> requires invoking {{WildcardAddressManager#getDirectBindings}}, which is O(k) 
> in the number of queues.
> From method profiling, this can consume up to 95% of our CPU time when 
> needing to clean up many of these. 
> It would be nice to make this more efficient, which shouldn't be difficult 
> given the iteration just does a simple equality check.



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

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


Reply via email to