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