You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Rico Neubauer (Jira)" <ji...@apache.org> on 2022/08/04 07:14:00 UTC

[jira] [Created] (ARTEMIS-3922) Reducing contention on java.lang.Throwable#getOurStackTrace

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)