diff --git a/sql/core/src/main/scala/org/apache/spark/sql/artifact/ArtifactManager.scala b/sql/core/src/main/scala/org/apache/spark/sql/artifact/ArtifactManager.scala index 346cdb832c3ff..e11f0f99bf2f6 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/artifact/ArtifactManager.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/artifact/ArtifactManager.scala @@ -422,8 +422,7 @@ class ArtifactManager(session: SparkSession) extends AutoCloseable with Logging artifactPath) // Ensure that no reference to `this` is captured/help by the cleanup lambda private def getCleanable: Cleaner.Cleanable = cleaner.register( - this, - () => ArtifactManager.cleanUpGlobalResources(cleanUpStateForGlobalResources) + this, new StateCleanupRunner(cleanUpStateForGlobalResources) ) private var cleanable = getCleanable @@ -529,6 +528,12 @@ object ArtifactManager extends Logging { val JAR, FILE, ARCHIVE = Value } + private class StateCleanupRunner(cleanupState: ArtifactStateForCleanup) extends Runnable { + override def run(): Unit = { + ArtifactManager.cleanUpGlobalResources(cleanupState) + } + } + // Shared cleaner instance private val cleaner: Cleaner = Cleaner.create()