]
Darran Lofthouse updated WFLY-12836:
------------------------------------
Component/s: Security
Large allocations in EJBContextImpl#isCallerInRole
--------------------------------------------------
Key: WFLY-12836
URL:
https://issues.jboss.org/browse/WFLY-12836
Project: WildFly
Issue Type: Bug
Components: EJB, Security
Affects Versions: 18.0.1.Final
Reporter: Philippe Marschall
Assignee: Cheng Fang
Priority: Major
Attachments: elytron_allocations_redacted.PNG
In our application we have the need to know the roles of the current user. We would like
to do this using Java / Jakarta EE APIs rather than rely on WildFly implementation
classes. We do this by iterating over all roles, which we know statically, and calling
{{EJBContext#isCallerInRole}} for each one. This seem to be a common technique, see [How
to get user roles in a JSP /
Servlet|https://stackoverflow.com/questions/344117/how-to-get-user-roles-...].
That's about 100 roles for us. We were expecting that would be a lookup into a
{{HashMap}} or similar with O(1) complexity and almost no allocations.
This however does not seem to be case as {{EJBContextImpl#isCallerInRole}} seems to do
the role mapping for every call. This results in a large amount of allocations. In our
case this completely dominates our allocation profile. See attached screenshot from JFR.