From aebbdeaf92afc29f951ad05fbc7a15ba0bfe8b77 Mon Sep 17 00:00:00 2001 From: Vladimir Sukharev Date: Thu, 26 Oct 2023 20:03:34 +0000 Subject: [PATCH] [K/N] Fix OS file handles leak in DependencyProcessor Merge-request: KT-MR-12705 Merged-by: Vladimir Sukharev --- .../kotlin/konan/util/DependencyProcessor.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/native/utils/src/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt b/native/utils/src/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt index ea6e2e95b4a..383a46a67ef 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt @@ -295,14 +295,16 @@ class DependencyProcessor( if (remoteDependencies.isEmpty()) { return } synchronized(lock) { - RandomAccessFile(lockFile, "rw").channel.lock().use { - remoteDependencies.forEach { (dependency, candidate) -> - val baseUrl = when (candidate) { - DependencySource.Remote.Public -> dependenciesUrl - DependencySource.Remote.Internal -> InternalServer.url + RandomAccessFile(lockFile, "rw").use { + it.channel.lock().use { + remoteDependencies.forEach { (dependency, candidate) -> + val baseUrl = when (candidate) { + DependencySource.Remote.Public -> dependenciesUrl + DependencySource.Remote.Internal -> InternalServer.url + } + // TODO: consider using different caches for different remotes. + downloadDependency(dependency, baseUrl) } - // TODO: consider using different caches for different remotes. - downloadDependency(dependency, baseUrl) } } }