Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Availability
-
Low
-
Normal
-
User Report
-
All
-
None
-
Description
In CASSANDRA-16666 the SSLContext cache was changed to clear individual EncryptionOptions from the SslContext cache if they needed reloading to reduce resource consumption. Before the change if ANY cert needed hot reloading, the SSLContext cache would be cleared for ALL certs.
If the legacy SSL storage port is configured, a new EncryptionOptions object is created in org.apache.cassandra.net.InboundSockets#addBindings just for binding the socket, but never gets cleared as the change in port means it no longer matches the configuration retrieved from DatabaseDescriptor in org.apache.cassandra.net.MessagingServiceMBeanImpl#reloadSslCertificates.
This is unlikely to be an issue in practice as the legacy SSL internode socket is only used in mixed version clusters with pre-4.0 nodes, so the cert only needs to stay valid until all nodes upgrade to 4.x or above.
One way to avoid this class of failures is to just check the entries present in the SSLContext cache.