Details
-
Improvement
-
Status: Triage Needed
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
All
-
None
Description
While working on CASSANDRA-15170 native libraries for libc functions, epoll support and openssl were observed holding gcroots to the instance class loaders when in-JVM dtest with(NETWORK) support was enabled. The solution for CASSANDRA-15170 was to disable native libraries to get everything working, but this is not ideal because in-JVM tests will not be testing the real code on that platform.
One proposed solution from ifesdjeen and benedict is to introduce an additional classloader per-Cassandra version that can be used for loading native libraries and share the CassandraVersionClassLoader by each instance of that version, enabling the InstanceClassLoader to be garbage collected.
CLibrary com.sun.jna.Native.registeredClasses com.sun.jna.Native.options com.sun.jna.Native.registredLibraries Netty io.netty.channel.ChannelException io.netty.channel.unix.DatagramSocketAddress io.netty.channel.unix.PeerCredentials io.netty.internal.tcnative.CertificateCallbackTask io.netty.internal.tcnative.CertificateVerifierTask io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask io.netty.internal.tcnative.SSLPrivateKeyMethodTask io.netty.internal.tcnative.SSLTask