[
https://issues.apache.org/jira/browse/ARTEMIS-2571?focusedWorklogId=357271&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-357271
]
ASF GitHub Bot logged work on ARTEMIS-2571:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 10/Dec/19 17:48
Start Date: 10/Dec/19 17:48
Worklog Time Spent: 10m
Work Description: sebthom commented on pull request #2913: ARTEMIS-2571
Remove synchronization of ActiveMQServerImpl#getSessions()
URL: https://github.com/apache/activemq-artemis/pull/2913#discussion_r356185619
##########
File path:
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
##########
@@ -294,7 +294,7 @@
private FileStoreMonitor fileStoreMonitor;
- private final Map<String, ServerSession> sessions = new
ConcurrentHashMap<>();
+ private final ConcurrentMap<String, ServerSession> sessions = new
ConcurrentHashMap<>();
Review comment:
ATM I am not really sure how I can provide a perf test for the admin UI. The
issue is that getSessions() can be very
The getSessions() methods are only used by the ActiveMQServerControlImpl
and the ConnectionView class, so I would think that this particular change
cannot negatively affect the hot path.
ATM I am not really sure how I can provide a perf test for the effect in the
webconsole.
The getSessions() methods are only used by the ActiveMQServerControlImpl and
the ConnectionView class to list session attributes or to close a session
manually, so I can't see how removing the synchronized keyword from these
methods can affect the performance of the hot path negatively.
Also if this synchronization really is required than something else must
already be broken here since ActiveMQServerImpl.removeSession(),
ActiveMQServerImpl.createSession() and ActiveMQServerImpl.getSessionByID()
access/modify the sessions map without synchronizing on `this`.
So even without a perf test I would argue something should be changed,
either createSession/getSessionByID/removeSession also need to synchronize on
`this` or the `synchronized` keyword on `getSessions()` methods is useless.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 357271)
Time Spent: 1h 10m (was: 1h)
> Remove unneccessary synchronization in ActiveMQServerImpl
> ---------------------------------------------------------
>
> Key: ARTEMIS-2571
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2571
> Project: ActiveMQ Artemis
> Issue Type: Improvement
> Components: Broker, Web Console
> Affects Versions: 2.10.1
> Reporter: Sebastian T
> Priority: Minor
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> The ActiveMQServerImpl sessions field is a ConcurrentHashMap. Synchronizing
> on the ActiveMQServerImpl object to iterate over the map is not necessary.
> ActiveMQServerImpl#getSession, ActiveMQServerImpl#removeSession and
> ActiveMQServerImpl#createSession also work on the sessions field without
> synchronizing on the ActiveMQServerImpl.
> Removing the synchronized keyword on the ActiveMQServerImpl#getSessions()
> methods e.g. improves loading of Connections view, especially when multiple
> administrators are using the UI.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)