[ https://issues.apache.org/jira/browse/JAMES-3587?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Tellier closed JAMES-3587. --------------------------------- Resolution: Fixed https://github.com/apache/james-project/pull/442 contributed this. > Deprecate MDCBuild::addContext > ------------------------------ > > Key: JAMES-3587 > URL: https://issues.apache.org/jira/browse/JAMES-3587 > Project: James Server > Issue Type: Improvement > Components: James Core > Affects Versions: 3.6.0 > Reporter: Benoit Tellier > Priority: Major > Fix For: 3.7.0 > > Attachments: Screenshot from 2021-05-19 21-13-46.png > > Time Spent: 20m > Remaining Estimate: 0h > > h3. Why? > MDCBuilder::addContext does an implicit call to Object::toString > There are two reasons: > - 1. Formatting. For instance `{"user":"btellier@erugerkuf"}` instead of > simply `btellier@erugerkuf`. > - 2. Performance. > See the attached flame graphs: James spends ~1.20% of CPU calling > Object::toString which correlate closely to MDCBuilder::addContext. This > crosses the "valuable to optimize" threashold. Especially calls to > MoreObject::toStringHelper(this) are not neglictible. > h3 How? > Deprecate the current API and replace it by an API that explicitly requires > String or Optional<String> so that the callers understand that they have to > pass a string. > If they decide to pass toString then they need to explicitly call it, and be > fully aware of it. Nothing hidden anymore. > On the philosophy this mimics SLF4J MDC API. > Adapt all calls made in James code base to use this newer API. > Also, StructuredLogger API needs to be adapted too. > I don't think we should remove the deprecated calls -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org