Skip to content

Conversation

@scottme
Copy link

@scottme scottme commented Dec 24, 2025

What changes were proposed in this pull request?

As stated in https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/ref/Cleaner.html
The cleaning action could be a lambda but all too easily will capture the object reference, by referring to fields of the object being cleaned, preventing the object from becoming phantom reachable. Using a static nested class, as above, will avoid accidentally retaining the object reference.

For more details, and the test and analysis are in https://issues.apache.org/jira/browse/SPARK-54753

image

After running with Spark 4.0.1, the ArtififactManager is leaked, its referenced SessionState/SparkSession is as well leaked.

Why are the changes needed?

use a separate class to ref the cleanup state

Does this PR introduce any user-facing change?

No

How was this patch tested?

with test program in https://issues.apache.org/jira/browse/SPARK-54753, and use Visual VM to monitor the memory usage

Was this patch authored or co-authored using generative AI tooling?

No

@github-actions github-actions bot added the SQL label Dec 24, 2025
@scottme scottme changed the title [SPARK-54753] fix memory leak in cleaner of artifactManager [SPARK-54753][SQL] fix memory leak in cleaner of artifactManager Dec 24, 2025
@scottme scottme changed the title [SPARK-54753][SQL] fix memory leak in cleaner of artifactManager [SPARK-54753][SQL] Fix memory leak of ArtifactManager (to branch 4.1) Dec 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant