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

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

                Author: ASF GitHub Bot
            Created on: 02/Jun/25 20:07
            Start Date: 02/Jun/25 20:07
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on code in PR #5719:
URL: https://github.com/apache/activemq-artemis/pull/5719#discussion_r2121949171


##########
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSessionState.java:
##########
@@ -186,35 +186,39 @@ public void setAttached(boolean attached) {
 
    public Collection<MqttTopicSubscription> getSubscriptions() {
       Collection<MqttTopicSubscription> result = new HashSet<>();
-      for (Pair<MqttTopicSubscription, Integer> pair : subscriptions.values()) 
{
-         result.add(pair.getA());
+      for (SubscriptionItem item : subscriptions.values()) {
+         result.add(item.getSubscription());
       }
       return result;
    }
 
    public Collection<Pair<MqttTopicSubscription, Integer>> 
getSubscriptionsPlusID() {

Review Comment:
   I think this should just return `Map<String, 
MQTTSessionState.SubscriptionItem>`, e.g.:
   ```java
   public Map<String, SubscriptionItem> getSubscriptionsPlusID() {
      return new HashMap<>(subscriptions);
   }
   ```
   It should be simple to update any code which calls this function to deal 
with the new return value.





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

    Worklog Id:     (was: 971567)
    Time Spent: 50m  (was: 40m)

> Improve performance of SUBSCRIPTION_IDENTIFIER fetching from MQTT session 
> state
> -------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-5121
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5121
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: MQTT
>    Affects Versions: 2.37.0
>            Reporter: Adam Zyzak
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> Recently I performed stress test of a system using Artemis as a message 
> broker for MQTT and STOMP protocols. I noticed huge difference in performance 
> and CPU usage between these protocols.
> I made some jstacks and it shown that majority of time is spent in method 
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTSessionState#getMatchingSubscriptionIdentifiers
>  compiling regular expressions. 
> It would be helpful if performance of this method was improved, especially 
> since it is executed on every publish, either by caching compiled patterns, 
> adding special cases for simpler topic names (topic names without special 
> characters may be compared using equality, # subscriptions can be always 
> added and topic names having # at the end can be compared using startsWith) 
> or just adding option to configuration allowing to skip adding 
> SUBSCRIPTION_IDENTIFIER to publish message.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to