Hi Sean,

Thanks for your review, I have removed the stale comment from the VerificationProvider.

As for your concern on race condition, legacyChanged and the String/String legacy mapping are still synchronized on the provider object. Only the service mapping is managed by the ConcurrentHashMap. I have also changed serviceChanged to be volatile. For those methods which no longer have synchronized keywords, they still have synchronized blocks around the legacy mapping related code. In general, the provider mappings are populated during construction time and rarely updated afterwards. In addition, most if not all, they either use all legacy or all service. The mixing of them makes the code un-necessarily complicated, oh-well.

Latest webrev: http://cr.openjdk.java.net/~valeriep/7092821/webrev.01

Valerie

On 12/4/2018 2:29 PM, Sean Mullan wrote:
I haven't reviewed all of this, but had a couple of comments so far:

- VerificationProvider.java

77         // the provider. Otherwise, create a temporary map and use a

This comment is now stale so it needs to be removed/updated.

- Provider.java

You removed synchronized from several of the methods, but some of those methods modified fields such as servicesChanged and legacyChanged. Are there any concurrency issues or race conditions now that those methods are not synchronized?

--Sean


On 11/21/18 1:05 PM, Valerie Peng 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





Reply via email to