You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Doug Rohrer (Jira)" <ji...@apache.org> on 2024/09/17 17:46:00 UTC
[jira] [Comment Edited] (CASSANDRA-19783) In-jvm dtest to detect InstanceClassLoaderLeaks
[ https://issues.apache.org/jira/browse/CASSANDRA-19783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17882476#comment-17882476 ]
Doug Rohrer edited comment on CASSANDRA-19783 at 9/17/24 5:45 PM:
------------------------------------------------------------------
Thanks for taking another look. I've rebased again and squashed the commits. Tests were run again, with the same 2 failures as the original pre-existing issues (CASSANDRA-19702 and CASSANDRA-19848) so I think we're good to go.
Attached new ci_summary.html.
was (Author: JIRAUSER306783):
Thanks for taking another look. I've rebased again and squashed the commits. Tests were run again, with the same 2 failures as the original pre-existing issues (CASSANDRA-19702 and CASSANDRA-19848) so I think we're good to go.
> In-jvm dtest to detect InstanceClassLoaderLeaks
> -----------------------------------------------
>
> Key: CASSANDRA-19783
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19783
> Project: Cassandra
> Issue Type: Improvement
> Components: Test/dtest/java
> Reporter: Doug Rohrer
> Assignee: Doug Rohrer
> Priority: Normal
> Labels: pull-request-available
> Attachments: ci_summary-1.html, ci_summary.html
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> It is currently very easy to add dependencies/code that cause in-jvm dtest {{InstanceClassLoader}} leaks, and hard to find them. These patches add a WeakHashSet that allows us to count the number of reachable InstanceClassLoaders in the in-jvm dtest API, so that we can use it in the ResourceLeakTest in the actual Cassandra branches in CI (it only takes 2 iterations to find the leak recently introduced by the inclusion of the {{oshi.jna}} library, which was fixed in [https://github.com/apache/cassandra-in-jvm-dtest-api/pull/38])
> Notes:
> The trunk patch +requires+ the changes made in the in-jvm-dtest-api project in order to compile.
> Additionally, ResourceLeakTest#looperEverythingTest (the newly-enabled test) won't fail once we pick up the changes made to include `osha.jna` in the in-jvm-dtest-api project, so I added some "DO NOT COMMIT" code there to prove the test can in fact detect the leak.
>
> NOTE: I'm removing the `DO NOT COMMIT` code that demonstrates the test actually fails when there's a leak. If you want to try it out, you can change the line 202 in ResourceLeakTest.java to this:
>
> {code:java}
> try (Cluster cluster = (Cluster) builder.withNodes(numClusterNodes).withConfig(updater)
> .withSharedClasses(builder.getSharedClasses().and(name -> !name.startsWith("oshi.jna.")))
> .start())
> {code}
> This removes the `oshi.jna` classes from the shared class loader, which demonstrates the failure.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org