diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt index 465d7997f70..7f1ea908f59 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt @@ -136,6 +136,9 @@ interface CompileService : Remote { operationsTracer: RemoteOperationsTracer? ): CallResult + @Throws(RemoteException::class) + fun clearJarCache() + @Throws(RemoteException::class) fun leaseReplSession( aliveFlagPath: String?, diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt index 6e0bca0f10c..b1c6c19241f 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt @@ -680,7 +680,7 @@ class CompileServiceImpl( } } - private fun clearJarCache() { + override fun clearJarCache() { ZipHandler.clearFileAccessorCache() (KotlinCoreEnvironment.applicationEnvironment?.jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index f042476a460..458f47e6fde 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -142,6 +142,9 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil super.compileWithDaemon(compilerClassName, argsArray, environment) } exitCode?.let { + withDaemon(environment, retryOnConnectionError = true) { daemon, sessionId -> + daemon.clearJarCache() + } logFinish(DAEMON_EXECUTION_STRATEGY) } return exitCode