fix: Setting concurrency>1 with single release breaks sync (#290)

Fixes #287
This commit is contained in:
KUOKA Yusuke 2018-09-04 20:59:24 +09:00 committed by GitHub
parent 53dea091e3
commit 60843cc224
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 9 deletions

View File

@ -223,7 +223,7 @@ func (state *HelmState) SyncReleases(helm helmexec.Interface, additionalValues [
return prepErrs
}
jobQueue := make(chan *ReleaseSpec)
jobQueue := make(chan *syncPrepareResult)
results := make(chan syncResult)
if workerLimit < 1 {
@ -231,7 +231,7 @@ func (state *HelmState) SyncReleases(helm helmexec.Interface, additionalValues [
}
for w := 1; w <= workerLimit; w++ {
go func() {
for _, prep := range preps {
for prep := range jobQueue {
release := prep.release
flags := prep.flags
chart := normalizeChart(state.basePath, release.Chart)
@ -244,15 +244,13 @@ func (state *HelmState) SyncReleases(helm helmexec.Interface, additionalValues [
}()
}
go func() {
for i := 0; i < len(state.Releases); i++ {
jobQueue <- &state.Releases[i]
}
close(jobQueue)
}()
for i := 0; i < len(preps); i++ {
jobQueue <- &preps[i]
}
close(jobQueue)
errs := []error{}
for i := 0; i < len(state.Releases); {
for i := 0; i < len(preps); {
select {
case res := <-results:
if len(res.errors) > 0 {