From 23dde457efa01ba7a17e015bf6d3256f69f23dbc Mon Sep 17 00:00:00 2001 From: Will Browne Date: Wed, 30 Mar 2022 14:48:49 +0200 Subject: [PATCH] Plugins: Don't start runner ticker for Core plugins (#46964) * Plugins: Don't start runner ticker for Core plugins * add test * correct start check in test --- pkg/plugins/manager/manager.go | 8 +++++--- pkg/plugins/manager/manager_test.go | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/pkg/plugins/manager/manager.go b/pkg/plugins/manager/manager.go index 729a4962741..119fd500f30 100644 --- a/pkg/plugins/manager/manager.go +++ b/pkg/plugins/manager/manager.go @@ -185,13 +185,15 @@ func (m *PluginManager) start(ctx context.Context, p *plugins.Plugin) error { return backendplugin.ErrPluginNotRegistered } + if p.IsCorePlugin() { + return nil + } + if err := startPluginAndRestartKilledProcesses(ctx, p); err != nil { return err } - if !p.IsCorePlugin() { - p.Logger().Debug("Successfully started backend plugin process") - } + p.Logger().Debug("Successfully started backend plugin process") return nil } diff --git a/pkg/plugins/manager/manager_test.go b/pkg/plugins/manager/manager_test.go index ce56bbc72ab..0354cdc6b7f 100644 --- a/pkg/plugins/manager/manager_test.go +++ b/pkg/plugins/manager/manager_test.go @@ -242,7 +242,7 @@ func TestPluginManager_Installer(t *testing.T) { err := pm.loadPlugins(context.Background(), plugins.Core, "test/path") require.NoError(t, err) - assert.Equal(t, 1, pc.startCount) + assert.Equal(t, 0, pc.startCount) assert.Equal(t, 0, pc.stopCount) assert.False(t, pc.exited) assert.False(t, pc.decommissioned) @@ -433,6 +433,20 @@ func TestPluginManager_lifecycle_managed(t *testing.T) { }) }) }) + + newScenario(t, true, func(t *testing.T, ctx *managerScenarioCtx) { + t.Run("Backend core plugin is registered but not started", func(t *testing.T) { + ctx.plugin.Class = plugins.Core + err := ctx.manager.registerAndStart(context.Background(), ctx.plugin) + require.NoError(t, err) + require.NotNil(t, ctx.plugin) + require.Equal(t, testPluginID, ctx.plugin.ID) + require.Equal(t, 0, ctx.pluginClient.startCount) + testPlugin, exists := ctx.manager.Plugin(context.Background(), testPluginID) + assert.True(t, exists) + require.NotNil(t, testPlugin) + }) + }) } func TestPluginManager_lifecycle_unmanaged(t *testing.T) { @@ -541,7 +555,7 @@ func newScenario(t *testing.T, managed bool, fn func(t *testing.T, ctx *managerS manager: manager, } - ctx.plugin, ctx.pluginClient = createPlugin(testPluginID, "", plugins.Core, managed, true) + ctx.plugin, ctx.pluginClient = createPlugin(testPluginID, "", plugins.External, managed, true) fn(t, ctx) }