From 13fc39def908a764c8b8e0f5b438f03c10e68e93 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 30 Mar 2022 06:03:35 -0700 Subject: [PATCH] Plugins: Don't start runner ticker for Core plugins (#46964) (#47056) * Plugins: Don't start runner ticker for Core plugins * add test * correct start check in test (cherry picked from commit 23dde457efa01ba7a17e015bf6d3256f69f23dbc) Co-authored-by: Will Browne --- 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 98594d8b2da..ad0982ca7ee 100644 --- a/pkg/plugins/manager/manager.go +++ b/pkg/plugins/manager/manager.go @@ -362,13 +362,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 6ca1a0dfac4..358360f5156 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) }