Chore: Soft failure in plugin initialization (#66210)

This commit is contained in:
Andres Martinez Gotor
2023-04-12 11:34:16 +02:00
committed by GitHub
parent 48de17945f
commit 52f39e6fa0
3 changed files with 125 additions and 12 deletions

View File

@@ -161,17 +161,22 @@ func (l *Loader) loadPlugins(ctx context.Context, src plugins.PluginSource, foun
verifiedPlugins = append(verifiedPlugins, plugin)
}
// initialize plugins
initializedPlugins := make([]*plugins.Plugin, 0)
for _, p := range verifiedPlugins {
err := l.pluginInitializer.Initialize(ctx, p)
if err != nil {
return nil, err
l.log.Error("Could not initialize plugin", "pluginId", p.ID, "err", err)
continue
}
if errDeclareRoles := l.roleRegistry.DeclarePluginRoles(ctx, p.ID, p.Name, p.Roles); errDeclareRoles != nil {
l.log.Warn("Declare plugin roles failed.", "pluginID", p.ID, "err", errDeclareRoles)
}
initializedPlugins = append(initializedPlugins, p)
}
for _, p := range verifiedPlugins {
for _, p := range initializedPlugins {
if err := l.load(ctx, p); err != nil {
l.log.Error("Could not start plugin", "pluginId", p.ID, "err", err)
}
@@ -181,7 +186,7 @@ func (l *Loader) loadPlugins(ctx context.Context, src plugins.PluginSource, foun
}
}
return verifiedPlugins, nil
return initializedPlugins, nil
}
func (l *Loader) Unload(ctx context.Context, pluginID string) error {