From 23144b92d85f42477e865fe2687986fec74ff8c4 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 28 Oct 2022 18:40:26 +0200 Subject: [PATCH] Fix FastJarFS caches cleaning - add FastJarFS cache cleaning to the daemon implementation, so the behavior is now the same as for CoreJarFS - clear not only mappings but also handlers cache: this may result some slowdown on comparison with the previous cleaning implementation, but should avoid unreliable behavior on heavy parallel build usages. --- .../cli/jvm/compiler/KotlinCoreApplicationEnvironment.kt | 2 +- .../src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.kt index bc8dd4766e8..58441b241a1 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.kt @@ -51,7 +51,7 @@ class KotlinCoreApplicationEnvironment private constructor( } fun idleCleanup() { - fastJarFileSystemField?.cleanOpenFilesCache() + fastJarFileSystemField?.clearHandlersCache() } companion object { diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt index 51e8eb30eb6..6041e2aa6a4 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt @@ -1235,7 +1235,10 @@ class CompileServiceImpl( override fun clearJarCache() { ZipHandler.clearFileAccessorCache() - (KotlinCoreEnvironment.applicationEnvironment?.jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache() + KotlinCoreEnvironment.applicationEnvironment?.apply { + (jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache() + idleCleanup() + } } private inline fun ifAlive(