JDK-8046957 : sunpkcs11 SessionManager improvement
  • Type: JEP
  • Component: security-libs
  • Sub-Component: javax.crypto:pkcs11
  • Priority: P3
  • Status: Closed
  • Resolution: Rejected
  • Fix Versions: 8u40
  • Submitted: 2014-06-16
  • Updated: 2014-10-22
  • Resolved: 2014-08-12
Related Reports
Relates :  
Description
Summary
-
Replace non-concurrent list array with a concurrent queue for session management in sunpkcs11.


Success Metric
-
Increase the performance.


Motivation
-
Performance did not scale as well as it could have using microbenchmarks on some hardware platform.

Description
-
Session management in sunpkcs11 has been done with synchronized methods around an ArrayList which holds idle PKCS#11 session in a queue.  This queue exists to provide better performance by giving open and idle sessions to new crypto operations. Without a queue, opening and closing PKCS#11 session through JNI to the native PKCS#11 library after each crypto operation would be CPU expensive.

The change is to modernize this queue by using a concurrent class, ConcurrentLinkedDeque, and an AtomicInteger as a session counter.  This leaves the locking solely in the queue where it is performed better, and releases five methods from being bottlenecked in synchronized locks.

Testing
-
Used provided test tool in JDK-7107611, no other testing is required.


Comments
I've rejected this JEP, not owing to its technical content (which is absolutely fine) but becuase a JEP should not be necessary for such a small enhancement.
12-08-2014