From 0b1e9445c8073e220c2c3beb594cf768773fae09 Mon Sep 17 00:00:00 2001 From: Allan Guwatudde Date: Fri, 17 Dec 2021 09:39:10 +0300 Subject: [PATCH] [MM-40682] - SIGSEGV after upgrade from 6.1.0 to 6.2.0 (#19192) * [MM-40682] - SIGSEGV after upgrade from 6.1.0 to 6.2.0 * feedback impl --- app/plugin.go | 4 +++- app/plugin_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/plugin.go b/app/plugin.go index 2c3b46723c..e74b345d27 100644 --- a/app/plugin.go +++ b/app/plugin.go @@ -176,7 +176,9 @@ func (ch *Channels) initPlugins(c *request.Context, pluginDir, webappPluginDir s ch.pluginsLock.RUnlock() if pluginsEnvironment != nil || !*ch.srv.Config().PluginSettings.Enable { ch.syncPluginsActiveState() - pluginsEnvironment.TogglePluginHealthCheckJob(*ch.srv.Config().PluginSettings.EnableHealthCheck) + if pluginsEnvironment != nil { + pluginsEnvironment.TogglePluginHealthCheckJob(*ch.srv.Config().PluginSettings.EnableHealthCheck) + } return } diff --git a/app/plugin_test.go b/app/plugin_test.go index 8c395a0b93..f060b47379 100644 --- a/app/plugin_test.go +++ b/app/plugin_test.go @@ -20,6 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/mattermost/mattermost-server/v6/app/request" "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/plugin" "github.com/mattermost/mattermost-server/v6/shared/mlog" @@ -628,6 +629,37 @@ func TestPluginSync(t *testing.T) { } } +// See https://github.com/mattermost/mattermost-server/issues/19189 +func TestChannelsPluginsInit(t *testing.T) { + th := Setup(t) + defer th.TearDown() + + runNoPanicTest := func(t *testing.T) { + ctx := request.EmptyContext() + path, _ := fileutils.FindDir("tests") + + require.NotPanics(t, func() { + th.Server.Channels().initPlugins(ctx, path, path) + }) + } + + t.Run("no panics when plugins enabled", func(t *testing.T) { + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = true + }) + + runNoPanicTest(t) + }) + + t.Run("no panics when plugins disabled", func(t *testing.T) { + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = false + }) + + runNoPanicTest(t) + }) +} + func TestSyncPluginsActiveState(t *testing.T) { th := Setup(t) defer th.TearDown()