@@ -11,13 +11,18 @@ import java.time.Instant
1111import java.time.ZoneOffset
1212import java.time.ZonedDateTime
1313import java.time.temporal.ChronoUnit
14+ import java.util.concurrent.Executors
15+ import java.util.concurrent.FutureTask
1416import java.util.concurrent.atomic.AtomicInteger
1517
1618@Service(" githubActionsPipelineCommitsService" )
1719class PipelineCommitService (
1820 private val buildRepository : BuildRepository ,
1921 private val commitService : CommitService
2022) {
23+ private val defaultNumberOfBranchFetchConcurrency = 10
24+ private val executorService = Executors .newFixedThreadPool(defaultNumberOfBranchFetchConcurrency)
25+
2126 fun mapCommitToRun (
2227 pipeline : PipelineConfiguration ,
2328 runs : MutableList <GithubActionsRun >,
@@ -28,8 +33,9 @@ class PipelineCommitService(
2833 val numberOfBranches = runsGroupedByBranch.size
2934 val progressCounter = AtomicInteger (0 )
3035
31- runsGroupedByBranch
32- .forEach { (branch, run) ->
36+ val taskMap: MutableMap <String , FutureTask <Map <GithubActionsRun , List <Commit >>>> = mutableMapOf ()
37+ runsGroupedByBranch.forEach { (branch, run) ->
38+ val branchTask = FutureTask {
3339 emitCb(
3440 SyncProgress (
3541 pipeline.id,
@@ -40,8 +46,15 @@ class PipelineCommitService(
4046 GithubActionConstants .totalNumberOfSteps,
4147 )
4248 )
43- branchCommitsMap[branch] = mapRunToCommits(pipeline, run)
49+ mapRunToCommits(pipeline, run)
4450 }
51+ taskMap[branch] = branchTask
52+ executorService.submit(branchTask)
53+ }
54+ runsGroupedByBranch.forEach { (branch, _) ->
55+ branchCommitsMap[branch] = taskMap[branch]!! .get()
56+ }
57+
4558 return branchCommitsMap.toMap()
4659 }
4760
0 commit comments