[ https://issues.apache.org/jira/browse/ARTEMIS-4814?focusedWorklogId=923976&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-923976 ]
ASF GitHub Bot logged work on ARTEMIS-4814: ------------------------------------------- Author: ASF GitHub Bot Created on: 21/Jun/24 14:22 Start Date: 21/Jun/24 14:22 Worklog Time Spent: 10m Work Description: clebertsuconic commented on code in PR #4972: URL: https://github.com/apache/activemq-artemis/pull/4972#discussion_r1645202926 ########## 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: Yeah.. I did some testing.. I thought the compute would do a loop retry only (I read the wrong code). I added some testing.. and I changed your code with adding sleeps and everything worked.. I could see the wait to lock threads. If you could rebase against main now that I added a test to validate this? also, you can verify check style by doing this: mvn -Pdev install -DskipTests=true -T2 Issue Time Tracking ------------------- Worklog Id: (was: 923976) Time Spent: 3h 50m (was: 3h 40m) > 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 > Affects Versions: 2.35.0 > Reporter: Josh Byster > Priority: Minor > Fix For: 2.36.0 > > Time Spent: 3h 50m > 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