@@ -220,17 +220,17 @@ func NewProvider(evaluationStrategy EvaluationStrategy, options ...Option) (*Pro
220220 }
221221
222222 if len (config .providers ) == 0 {
223- return nil , errors .New ("providers cannot be nil or empty " )
223+ return nil , errors .New ("no providers configured: at least one provider must be registered using WithProvider() " )
224224 }
225225
226226 providers := make ([]NamedProvider , 0 , len (config .providers ))
227227 collectedHooks := make ([]of.Hook , 0 , len (config .providers ))
228228 for i , provider := range config .providers {
229229 // Validate Providers
230230 if provider .FeatureProvider == nil {
231- return nil , fmt .Errorf ("provider at %d cannot be nil" , i )
231+ return nil , fmt .Errorf ("provider %s at %d cannot be nil" , provider . name , i )
232232 }
233- if provider .Name () == "" {
233+ if provider .name == "" {
234234 return nil , fmt .Errorf ("provider name at %d cannot be the empty string" , i )
235235 }
236236
@@ -396,11 +396,10 @@ func (p *Provider) Init(evalCtx of.EvaluationContext) error {
396396 Err : err ,
397397 ProviderName : "unknown" ,
398398 }
399- p .setStatus (of .ErrorState )
400- return pErr
401399 }
402400
403- return err
401+ p .setStatus (of .ErrorState )
402+ return pErr
404403 }
405404 close (handlers )
406405 workerCtx , shutdownFunc := context .WithCancel (context .Background ())
@@ -448,8 +447,13 @@ func (p *Provider) startListening(ctx context.Context, name string, h of.EventHa
448447 for {
449448 select {
450449 case e := <- h .EventChannel ():
450+ if e .EventMetadata == nil {
451+ e .EventMetadata = make (map [string ]any )
452+ }
451453 e .EventMetadata [MetadataProviderName ] = name
452- e .EventMetadata [MetadataProviderType ] = h .(of.FeatureProvider ).Metadata ().Name
454+ if p , ok := h .(of.FeatureProvider ); ok {
455+ e .EventMetadata [MetadataProviderType ] = p .Metadata ().Name
456+ }
453457 p .inboundEvents <- namedEvent {
454458 Event : e ,
455459 providerName : name ,
0 commit comments