Skip to content

Commit 8869dbf

Browse files
hfastekKamil Chwastek
and
Kamil Chwastek
authored
fix random behaviour in executeFilters (#164)
Co-authored-by: Kamil Chwastek <[email protected]>
1 parent 184e939 commit 8869dbf

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

pkg/selector/selector.go

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ func sortInstanceTypeInfo(instanceTypeInfoSlice []*instancetypes.Details) []*ins
367367
// executeFilters accepts a mapping of filter name to filter pairs which are iterated through
368368
// to determine if the instance type matches the filter values.
369369
func (itf Selector) executeFilters(filterToInstanceSpecMapping map[string]filterPair, instanceType string) (bool, error) {
370-
abort := make(chan bool, len(filterToInstanceSpecMapping))
370+
verdict := make(chan bool, len(filterToInstanceSpecMapping) + 1)
371371
errs := make(chan error)
372372
ctx, cancel := context.WithCancel(context.Background())
373373
defer cancel()
@@ -385,31 +385,29 @@ func (itf Selector) executeFilters(filterToInstanceSpecMapping map[string]filter
385385
errs <- err
386386
}
387387
if !ok {
388-
abort <- true
388+
verdict <- false
389389
}
390390
}
391391
}(ctx, filterName, filter)
392392
}
393-
done := make(chan bool)
394393
go func() {
395394
wg.Wait()
396-
done <- true
395+
verdict <- true
397396
}()
398-
select {
399-
case <-abort:
400-
cancel()
401-
var err error
402-
for {
403-
select {
404-
case e := <-errs:
405-
err = multierr.Append(err, e)
406-
default:
407-
return false, err
408-
}
409-
}
410-
case <-done:
397+
398+
if <-verdict {
411399
return true, nil
412400
}
401+
cancel()
402+
var err error
403+
for {
404+
select {
405+
case e := <-errs:
406+
err = multierr.Append(err, e)
407+
default:
408+
return false, err
409+
}
410+
}
413411
}
414412

415413
func exec(instanceType string, filterName string, filter filterPair) (bool, error) {

0 commit comments

Comments
 (0)