<div dir="ltr"><div dir="ltr"><div dir="ltr">I'm not an Author so I created the ticket on <a href="http://bugreport.java.com">bugreport.java.com</a>, it has the internal review ID 9062061</div><div dir="ltr"><br></div><div>Thanks,</div><div>Florent</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 27, 2019 at 6:04 PM Seán Coffey <<a href="mailto:sean.coffey@oracle.com">sean.coffey@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Probably best to log a bug to capture this issue. <br>
</p>
<p>It reminds me of another issue I've been meaning to wrap up:<br>
<a class="gmail-m_-3007434805093952975moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8223260" target="_blank">https://bugs.openjdk.java.net/browse/JDK-8223260</a></p>
<p>Similar scenario in how the ContextFactory is searched for. My
proposed<br>
patch is to cache a factory per classloader (for the NamingManager
issue at least)<br>
<br>
regards,<br>
Sean.<br>
</p>
<div class="gmail-m_-3007434805093952975moz-cite-prefix">On 27/08/2019 16:16, Florent Guillaume
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">Hi,
<div><br>
</div>
<div>When switching from Java 8 to Java 11,
we're experiencing an important slowdown when
executing LoginContext.login(), especially
under concurrency.</div>
<div><br>
</div>
<div>We tracked this down to JDK-8047789 which
changed the way the lookup of LoginModules is
done in LoginContext.invoke. Previously, it
was a simple Class.forName that is of course
extremely optimized. After JDK-8047789, there
is first a ServiceLoader-based lookup for the
class. This lookup doesn't seem to be cached.
In our case, it has to open the 400+ JARs in
our classpath (we're not using modules yet) to
check the content
of META-INF/services/javax.security.auth.spi.LoginModule,
and in addition this hits a synchronized block
in ZipFile.getEntry which prevents any
performance under concurrency.</div>
<div><br>
</div>
<div>Is there anything we can do to improve
LoginContext.login() in this context?</div>
<div><br>
</div>
<div>For reference, the code path to the
synchronized block:</div>
<div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.zip.ZipFile.getEntry(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ZipFile.java:346" target="_blank">java.base@11.0.4/ZipFile.java:346</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>-
locked <0x000000068b18bdd0> (a
java.util.jar.JarFile)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.zip.ZipFile$1.getEntry(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ZipFile.java:1121" target="_blank">java.base@11.0.4/ZipFile.java:1121</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.jar.JarFile.getEntry0(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/JarFile.java:576" target="_blank">java.base@11.0.4/JarFile.java:576</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.jar.JarFile.getEntry(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/JarFile.java:506" target="_blank">java.base@11.0.4/JarFile.java:506</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.jar.JarFile.getJarEntry(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/JarFile.java:468" target="_blank">java.base@11.0.4/JarFile.java:468</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
jdk.internal.loader.URLClassPath$JarLoader.getResource(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassPath.java:929" target="_blank">java.base@11.0.4/URLClassPath.java:929</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
jdk.internal.loader.URLClassPath$JarLoader.findResource(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassPath.java:912" target="_blank">java.base@11.0.4/URLClassPath.java:912</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
jdk.internal.loader.URLClassPath$1.next(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassPath.java:341" target="_blank">java.base@11.0.4/URLClassPath.java:341</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
jdk.internal.loader.URLClassPath$1.hasMoreElements(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassPath.java:351" target="_blank">java.base@11.0.4/URLClassPath.java:351</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.net.URLClassLoader$3$1.run(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassLoader.java:687" target="_blank">java.base@11.0.4/URLClassLoader.java:687</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.net.URLClassLoader$3$1.run(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassLoader.java:685" target="_blank">java.base@11.0.4/URLClassLoader.java:685</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.security.AccessController.doPrivileged(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/Native" target="_blank">java.base@11.0.4/Native</a>
Method)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.net.URLClassLoader$3.next(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassLoader.java:684" target="_blank">java.base@11.0.4/URLClassLoader.java:684</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.net.URLClassLoader$3.hasMoreElements(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/URLClassLoader.java:709" target="_blank">java.base@11.0.4/URLClassLoader.java:709</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.lang.CompoundEnumeration.next(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ClassLoader.java:3022" target="_blank">java.base@11.0.4/ClassLoader.java:3022</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.lang.CompoundEnumeration.hasMoreElements(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ClassLoader.java:3031" target="_blank">java.base@11.0.4/ClassLoader.java:3031</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
org.apache.catalina.loader.WebappClassLoaderBase$CombinedEnumeration.inc(WebappClassLoaderBase.java:2670)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
org.apache.catalina.loader.WebappClassLoaderBase$CombinedEnumeration.hasMoreElements(WebappClassLoaderBase.java:2655)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ServiceLoader.java:1202" target="_blank">java.base@11.0.4/ServiceLoader.java:1202</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ServiceLoader.java:1220" target="_blank">java.base@11.0.4/ServiceLoader.java:1220</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ServiceLoader.java:1264" target="_blank">java.base@11.0.4/ServiceLoader.java:1264</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.ServiceLoader$2.hasNext(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ServiceLoader.java:1299" target="_blank">java.base@11.0.4/ServiceLoader.java:1299</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.util.ServiceLoader$3.hasNext(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/ServiceLoader.java:1384" target="_blank">java.base@11.0.4/ServiceLoader.java:1384</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
javax.security.auth.login.LoginContext.invoke(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/LoginContext.java:691" target="_blank">java.base@11.0.4/LoginContext.java:691</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
javax.security.auth.login.LoginContext$4.run(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/LoginContext.java:665" target="_blank">java.base@11.0.4/LoginContext.java:665</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
javax.security.auth.login.LoginContext$4.run(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/LoginContext.java:663" target="_blank">java.base@11.0.4/LoginContext.java:663</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
java.security.AccessController.doPrivileged(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/Native" target="_blank">java.base@11.0.4/Native</a>
Method)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
javax.security.auth.login.LoginContext.invokePriv(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/LoginContext.java:663" target="_blank">java.base@11.0.4/LoginContext.java:663</a>)</div>
<div><span class="gmail-m_-3007434805093952975gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>at
javax.security.auth.login.LoginContext.login(<a class="gmail-m_-3007434805093952975moz-txt-link-abbreviated" href="mailto:java.base@11.0.4/LoginContext.java:574" target="_blank">java.base@11.0.4/LoginContext.java:574</a>)</div>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Florent<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail-m_-3007434805093952975gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<table style="color:rgb(10,10,10);font-family:Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;border-spacing:0px;padding:0px;vertical-align:top;width:600px">
<tbody>
<tr style="padding:0px;vertical-align:top">
<td style="font-family:Arial,Helvetica,sans-serif;line-height:1.33;padding:0px;vertical-align:top;word-wrap:break-word;width:38px;border-collapse:collapse"><a href="https://www.nuxeo.com/" style="background-color:transparent;border-bottom-width:0px;color:rgb(0,102,255);line-height:1.33;margin:0px;padding:0px" target="_blank"><img alt="Nuxeo Logo" style="border: none; display: block; vertical-align: middle; max-width: 100%; height: 32px; clear: both; margin-top: 4px; outline: 0px; text-decoration: none; width: 32px;" width="32" height="32"></a></td>
<td style="font-family:Arial,Helvetica,sans-serif;line-height:1.33;padding:0px;vertical-align:top;word-wrap:break-word;border-collapse:collapse">
<p style="font-size:15px;line-height:1.33;color:rgb(31,40,191);margin:0px;padding:0px"><span style="font-weight:700">Florent
Guillaume</span> Head of
R&D <a href="https://www.linkedin.com/in/fguillaume/" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img alt="LinkedIn" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;" width="14" height="14"></a> <a href="https://twitter.com/efge" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img alt="Twitter" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;" width="14" height="14"></a> <a href="https://github.com/efge" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img alt="Github" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;" width="14" height="14"></a></p>
<p style="font-weight:700;font-size:15px;line-height:1.33;color:rgb(0,102,255);margin:0px 0px 10px;padding:0px">Nuxeo
Content Services Platform. <span style="color:rgb(31,40,191)">Stay ahead.</span></p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><table style="color:rgb(10,10,10);font-family:Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;border-spacing:0px;padding:0px;vertical-align:top;width:600px"><tbody><tr style="padding:0px;vertical-align:top"><td style="font-family:Arial,Helvetica,sans-serif;line-height:1.33;padding:0px;vertical-align:top;word-wrap:break-word;width:38px;border-collapse:collapse"><a href="https://www.nuxeo.com/" style="background-color:transparent;border-bottom-width:0px;color:rgb(0,102,255);line-height:1.33;margin:0px;padding:0px" target="_blank"><img src="http://res.cloudinary.com/nuxeo/image/upload/c_scale,w_64/nuxeo-logo-x.png" alt="Nuxeo Logo" width="32" height="32" style="border: none; display: block; vertical-align: middle; max-width: 100%; height: 32px; clear: both; margin-top: 4px; outline: 0px; text-decoration: none; width: 32px;"></a></td><td style="font-family:Arial,Helvetica,sans-serif;line-height:1.33;padding:0px;vertical-align:top;word-wrap:break-word;border-collapse:collapse"><p style="font-size:15px;line-height:1.33;color:rgb(31,40,191);margin:0px;padding:0px"><span style="font-weight:700">Florent Guillaume</span> Head of R&D <a href="https://www.linkedin.com/in/fguillaume/" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img src="http://res.cloudinary.com/nuxeo/image/upload/c_scale,w_28/static/linkedin.png" alt="LinkedIn" width="14" height="14" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;"></a> <a href="https://twitter.com/efge" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img src="http://res.cloudinary.com/nuxeo/image/upload/c_scale,w_28/static/twitter.png" alt="Twitter" width="14" height="14" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;"></a> <a href="https://github.com/efge" style="background-color:transparent;border-bottom-width:0px;color:inherit" target="_blank"><img src="http://res.cloudinary.com/nuxeo/image/upload/c_scale,w_28/static/github.png" alt="Github" width="14" height="14" style="border-style: none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;"></a></p><p style="font-weight:700;font-size:15px;line-height:1.33;color:rgb(0,102,255);margin:0px 0px 10px;padding:0px">Nuxeo Content Services Platform. <span style="color:rgb(31,40,191)">Stay ahead.</span></p></td></tr></tbody></table></div></div></div></div>