Rico Neubauer created ARTEMIS-3922:
--------------------------------------
Summary: Reducing contention on
java.lang.Throwable#getOurStackTrace
Key: ARTEMIS-3922
URL: https://issues.apache.org/jira/browse/ARTEMIS-3922
Project: ActiveMQ Artemis
Issue Type: Improvement
Affects Versions: 2.24.0
Reporter: Rico Neubauer
Attachments: threads.txt
This is a request for improvement rg. performance in a very specific case, but
easy to accomplish.
h2. Scenario
On certain contaier'ed Windows machines we have identified that
{{java.lang.Throwable#getOurStackTrace}} along with
{{java.lang.StackTraceElement#initStackTraceElements}} show up as a very
expensive operations. The reason behind this is still unclear, but since the
{{#getOurStackTrace}} is synchronized, it suffers even more when the native
method {{#initStackTraceElements}} takes an unexpected long time.
This shows in thread-dumps in 2 locations for Artemis, where
connection-creation is the more crucial one from my pov.
See attached threads.txt
h2. Remedy
Fortunately the location where this gets used via
{{Thread.currentThread().getStackTrace()}} is simple to replace, since the
information needed could just get passed by caller.
Please see attached patch for my proposal.
Also available [here as
commit|https://github.com/seeburger-ag/activemq-artemis/commit/7396b9356256706a886f35da3a27274084e5a973].
Can create a pull request as well.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)