File tree Expand file tree Collapse file tree 1 file changed +15
-7
lines changed Expand file tree Collapse file tree 1 file changed +15
-7
lines changed Original file line number Diff line number Diff line change @@ -69,7 +69,7 @@ func (manager *serviceManager) Start() error {
69
69
}
70
70
71
71
running := & sync.WaitGroup {}
72
- fail := make (chan error )
72
+ fail := make (chan error , len ( manager . services ) )
73
73
74
74
for _ , service := range manager .services {
75
75
running .Add (1 )
@@ -98,16 +98,24 @@ func (manager *serviceManager) Start() error {
98
98
close (done )
99
99
}()
100
100
101
- var err error
101
+ faults := & multiError {}
102
102
select {
103
103
case <- done :
104
- // All ok.
105
- case err = <- fail :
106
- // At least one has failed.
107
- close (fail )
104
+ case err := <- fail :
105
+ faults .AddError (err )
106
+ // NOTE(lcooper): We'll bail eventually, collect all errors first.
107
+ Loop:
108
+ for {
109
+ select {
110
+ case err := <- fail :
111
+ faults .AddError (err )
112
+ case <- time .After (500 * time .Millisecond ):
113
+ break Loop
114
+ }
115
+ }
108
116
}
109
117
110
- return err
118
+ return faults . AsError ()
111
119
}
112
120
113
121
func (manager * serviceManager ) Reload () error {
You can’t perform that action at this time.
0 commit comments