RFR JDK-7092821 "java.security.Provider.getService() is synchronized and became scalability bottleneck"

Weijun Wang weijun.wang at oracle.com
Tue Dec 4 03:43:26 UTC 2018


Hi Valerie

I'm looking at the put->putService changes. Before this, a single put() in SunRsaSignEntries call adds a service but now you need to add() into a LinkedHashSet first in SunRsaSignEntries and then putService() each back in SunRsaSign.

I don't have a simple way to do this since Provider::putService is protected and SunRsaSignEntries is also used in VerificationProvider, just wonder if you have thought about this.

Thanks
Max

> On Nov 22, 2018, at 2:05 AM, Valerie Peng <valerie.peng at oracle.com> wrote:
> 
> Hi,
> 
> Can someone help reviewing this fix?
> 
> Besides changing the Provider class to use ConcurrentHashMap in order to reduce the lock contention on Provider.getService() calls, I also changed the security providers in java.base module to register through putService(...) calls. Performance is manually verified and mach5 run is clean.
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-7092821
> Webrev: http://cr.openjdk.java.net/~valeriep/7092821/webrev.00/
> 
> Thanks,
> Valerie
> 
> 
> 
> 
> 



More information about the security-dev mailing list