On Wed, 29 Sep 2021 10:45:41 GMT, Larry-N 
<github.com+75672469+larr...@openjdk.org> wrote:

> This fix adds a cache of service provider classes to LoginContext (in 
> particular, it's a cache of LoginModules classes). The approach helps to 
> increase the performance of the LoginContext.login() method significantly, 
> especially in a multi-threading environment. Service Loader is used for 
> polling on Service Provider classes, without instantiating LoginModules 
> object if Service Provider name doesn't match record in .config file. The set 
> of service providers is cached for each Context Loader separately.
> This code passed successfully tier1 and tier2 tests on mac os.

src/java.base/share/classes/javax/security/auth/login/LoginContext.java line 
306:

> 304:                                 () -> java.util.ServiceLoader.load(
> 305:                                     LoginModule.class, 
> contextClassLoader));
> 306:                 Set<Provider<LoginModule>> lmProviders = 
> sc.stream().collect(Collectors.toSet());

It's probably necessary to put the `collect` call above inside doPriv as well. 
The actual class loading might happen later.

-------------

PR: https://git.openjdk.java.net/jdk/pull/5748

Reply via email to