[v10.1.x] Licensing: Pass func to update env variables when starting plugin (#74678)

Licensing: Pass func to update env variables when starting plugin (#74620)

(cherry picked from commit 5e0b20266e)
This commit is contained in:
lean.dev
2023-09-12 10:06:14 -03:00
committed by GitHub
parent e41a47260c
commit c8bcc96d90
7 changed files with 18 additions and 11 deletions
@@ -28,11 +28,18 @@ func (i *Initializer) Initialize(ctx context.Context, p *plugins.Plugin) error {
return errors.New("could not find backend factory for plugin")
}
env, err := i.envVarProvider.Get(ctx, p)
if err != nil {
return err
// this will ensure that the env variables are calculated every time a plugin is started
envFunc := func() []string {
// envvar.Get actually never returns any error, safe to skip
vars, err := i.envVarProvider.Get(ctx, p)
// logging just in case
if err != nil {
p.Logger().Error("error building env variables", "err", err)
}
return vars
}
if backendClient, err := backendFactory(p.ID, p.Logger(), env); err != nil {
if backendClient, err := backendFactory(p.ID, p.Logger(), envFunc); err != nil {
return err
} else {
p.RegisterClient(backendClient)
@@ -129,7 +129,7 @@ type fakeBackendProvider struct {
}
func (f *fakeBackendProvider) BackendFactory(_ context.Context, _ *plugins.Plugin) backendplugin.PluginFactoryFunc {
return func(_ string, _ log.Logger, _ []string) (backendplugin.Plugin, error) {
return func(_ string, _ log.Logger, _ func() []string) (backendplugin.Plugin, error) {
return f.plugin, nil
}
}
+1 -1
View File
@@ -1047,7 +1047,7 @@ func TestLoader_Load_SkipUninitializedPlugins(t *testing.T) {
procPrvdr := fakes.NewFakeBackendProcessProvider()
// Cause an initialization error
procPrvdr.BackendFactoryFunc = func(ctx context.Context, p *plugins.Plugin) backendplugin.PluginFactoryFunc {
return func(pluginID string, _ log.Logger, _ []string) (backendplugin.Plugin, error) {
return func(pluginID string, _ log.Logger, _ func() []string) (backendplugin.Plugin, error) {
if pluginID == "test-datasource" {
return nil, errors.New("failed to initialize")
}