@@ -52,10 +52,10 @@ func NewMultiProvider(passedProviders []UniqueNameProvider, evaluationStrategy s
52
52
return nil , err
53
53
}
54
54
55
- err = multiProvider .Init (of.EvaluationContext {})
56
- if err != nil {
57
- return nil , err
58
- }
55
+ // err = multiProvider.Init(of.EvaluationContext{})
56
+ // if err != nil {
57
+ // return nil, err
58
+ // }
59
59
60
60
return multiProvider , nil
61
61
}
@@ -108,15 +108,15 @@ func registerProviders(mp *MultiProvider, providers []UniqueNameProvider) error
108
108
// Init will run the initialize method for all of provides and aggregate the errors.
109
109
func (mp * MultiProvider ) Init (evalCtx of.EvaluationContext ) error {
110
110
var wg sync.WaitGroup
111
+ errChan := make (chan err.StateErr , len (mp .providersEntries ))
111
112
112
- errChan := make (chan err.InitError , len (mp .providersEntries ))
113
113
for _ , provider := range mp .providersEntries {
114
114
wg .Add (1 )
115
115
go func (p UniqueNameProvider ) {
116
116
defer wg .Done ()
117
- if initMethod , ok := p .Provider .(of.StateHandler ); ok {
118
- if initErr := initMethod .Init (evalCtx ); initErr != nil {
119
- errChan <- err.InitError {ProviderName : p .Name , Err : initErr }
117
+ if stateHandle , ok := p .Provider .(of.StateHandler ); ok {
118
+ if initErr := stateHandle .Init (evalCtx ); initErr != nil {
119
+ errChan <- err.StateErr {ProviderName : p .Name , Err : initErr }
120
120
}
121
121
}
122
122
}(provider )
@@ -127,7 +127,7 @@ func (mp *MultiProvider) Init(evalCtx of.EvaluationContext) error {
127
127
close (errChan )
128
128
}()
129
129
130
- var errors []err.InitError
130
+ var errors []err.StateErr
131
131
for err := range errChan {
132
132
errors = append (errors , err )
133
133
}
@@ -138,7 +138,6 @@ func (mp *MultiProvider) Init(evalCtx of.EvaluationContext) error {
138
138
return & aggErr
139
139
}
140
140
141
-
142
141
return nil
143
142
}
144
143
@@ -147,7 +146,19 @@ func (mp *MultiProvider) Status() of.State {
147
146
}
148
147
149
148
func (mp * MultiProvider ) Shutdown () {
149
+ var wg sync.WaitGroup
150
+
151
+ for _ , provider := range mp .providersEntries {
152
+ wg .Add (1 )
153
+ go func (p UniqueNameProvider ) {
154
+ defer wg .Done ()
155
+ if stateHandle , ok := p .Provider .(of.StateHandler ); ok {
156
+ stateHandle .Shutdown ()
157
+ }
158
+ }(provider )
159
+ }
150
160
161
+ wg .Wait ()
151
162
}
152
163
153
164
func (mp * MultiProvider ) EventChannel () <- chan of.Event {
0 commit comments