RFR: 8262316: Reducing locks in RSA Blinding [v3]

djelinski github.com+30433125+djelinski at openjdk.java.net
Tue Apr 6 07:32:26 UTC 2021


On Tue, 6 Apr 2021 04:26:58 GMT, Anthony Scarpino <ascarpino at openjdk.org> wrote:

>> Hi,
>> 
>> I need a review of the locking change to the RSA blinding code. The problem was reported that multithreaded performance suffered because there was one global lock on the many blindings operation.  The change reduces locking by using a ConcurrentLinkedQueue to store the different BlindingParameters that other threads maybe using.  The queue size is limited to prevent sudden surges in stored BlindingParameters and a WeakHashMap is still used so the objects can be freed when no longer used.  Performance doubles under high load.
>> 
>> thanks
>> 
>> Tony
>
> Anthony Scarpino has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Use ReentrantLock for put and get

src/java.base/share/classes/sun/security/rsa/RSACore.java line 443:

> 441:         lock.lock();
> 442:         try {
> 443:             queue = blindingCache.get(n);

Suggestion:

            queue = blindingCache.computeIfAbsent(n, ignored -> new ConcurrentLinkedQueue<>());

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

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


More information about the security-dev mailing list