diff --git a/src/main/kotlin/com/bangbang93/openbmclapi/agent/service/ClusterService.kt b/src/main/kotlin/com/bangbang93/openbmclapi/agent/service/ClusterService.kt index 95a6fed..7c8e6ee 100644 --- a/src/main/kotlin/com/bangbang93/openbmclapi/agent/service/ClusterService.kt +++ b/src/main/kotlin/com/bangbang93/openbmclapi/agent/service/ClusterService.kt @@ -28,6 +28,7 @@ import io.socket.client.Socket import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll import kotlinx.coroutines.sync.Semaphore import kotlinx.coroutines.sync.withPermit import kotlinx.serialization.decodeFromByteArray @@ -92,9 +93,9 @@ class ClusterService( val sema = Semaphore(syncConfig.concurrency) - missingFiles.forEach { file -> - sema.withPermit { - async { + val jobs = missingFiles.map { file -> + async { + sema.withPermit { try { downloadFile(file) logger.debug { "Downloaded: ${file.path}" } @@ -106,6 +107,8 @@ class ClusterService( } } + jobs.awaitAll() + logger.info { "Sync completed: ${missingFiles.size} files" } }