plugins: further logging tweaks, fixes (#24229)

Fix a logging issue for prepackaged plugins error handling trying to reference a `nil` pointer.

Relates-to: https://mattermost.atlassian.net/browse/MM-53355
Этот коммит содержится в:
Jesse Hallam
2023-08-09 11:54:41 -03:00
коммит произвёл GitHub
родитель 122dbaf373
Коммит 7818d5a348
2 изменённых файлов: 10 добавлений и 4 удалений

Просмотреть файл

@@ -334,6 +334,11 @@ func (ch *Channels) syncPlugins() *model.AppError {
return appErr return appErr
} }
if len(pluginSignaturePathMap) == 0 {
ch.srv.Log().Info("No plugins to sync from the file store")
return nil
}
for _, plugin := range pluginSignaturePathMap { for _, plugin := range pluginSignaturePathMap {
wg.Add(1) wg.Add(1)
go func(plugin *pluginSignaturePath) { go func(plugin *pluginSignaturePath) {
@@ -896,7 +901,7 @@ func (ch *Channels) getPluginsFromFilePaths(fileStorePaths []string) map[string]
if strings.HasSuffix(path, ".tar.gz.sig") { if strings.HasSuffix(path, ".tar.gz.sig") {
id := strings.TrimSuffix(filepath.Base(path), ".tar.gz.sig") id := strings.TrimSuffix(filepath.Base(path), ".tar.gz.sig")
if val, ok := pluginSignaturePathMap[id]; !ok { if val, ok := pluginSignaturePathMap[id]; !ok {
mlog.Warn("Unknown signature", mlog.String("path", path)) ch.srv.Log().Warn("Unknown signature", mlog.String("path", path))
} else { } else {
val.signaturePath = path val.signaturePath = path
} }
@@ -909,6 +914,7 @@ func (ch *Channels) getPluginsFromFilePaths(fileStorePaths []string) map[string]
func (ch *Channels) processPrepackagedPlugins(pluginsDir string) []*plugin.PrepackagedPlugin { func (ch *Channels) processPrepackagedPlugins(pluginsDir string) []*plugin.PrepackagedPlugin {
prepackagedPluginsDir, found := fileutils.FindDir(pluginsDir) prepackagedPluginsDir, found := fileutils.FindDir(pluginsDir)
if !found { if !found {
ch.srv.Log().Debug("No prepackaged plugins directory found")
return nil return nil
} }
@@ -937,7 +943,7 @@ func (ch *Channels) processPrepackagedPlugins(pluginsDir string) []*plugin.Prepa
if errors.As(err, &appErr) && appErr.Id == "app.plugin.skip_installation.app_error" { if errors.As(err, &appErr) && appErr.Id == "app.plugin.skip_installation.app_error" {
return return
} }
ch.srv.Log().Error("Failed to install prepackaged plugin", mlog.String("plugin_id", p.Manifest.Id), mlog.String("bundle_path", psPath.bundlePath), mlog.Err(err)) ch.srv.Log().Error("Failed to install prepackaged plugin", mlog.String("bundle_path", psPath.bundlePath), mlog.Err(err))
return return
} }
prepackagedPlugins <- p prepackagedPlugins <- p
@@ -957,7 +963,7 @@ func (ch *Channels) processPrepackagedPlugins(pluginsDir string) []*plugin.Prepa
// processPrepackagedPlugin will return the prepackaged plugin metadata and will also // processPrepackagedPlugin will return the prepackaged plugin metadata and will also
// install the prepackaged plugin if it had been previously enabled and AutomaticPrepackagedPlugins is true. // install the prepackaged plugin if it had been previously enabled and AutomaticPrepackagedPlugins is true.
func (ch *Channels) processPrepackagedPlugin(pluginPath *pluginSignaturePath) (*plugin.PrepackagedPlugin, error) { func (ch *Channels) processPrepackagedPlugin(pluginPath *pluginSignaturePath) (*plugin.PrepackagedPlugin, error) {
logger := ch.srv.Log().With(mlog.String("plugin_id", pluginPath.pluginID), mlog.String("bundle_path", pluginPath.bundlePath)) logger := ch.srv.Log().With(mlog.String("bundle_path", pluginPath.bundlePath))
logger.Info("Processing prepackaged plugin") logger.Info("Processing prepackaged plugin")

Просмотреть файл

@@ -403,7 +403,7 @@ func (ch *Channels) installExtractedPlugin(manifest *model.Manifest, fromPluginD
} }
if version.LTE(existingVersion) { if version.LTE(existingVersion) {
logger.Warn("Skipping local installation of plugin since existing version is newer", mlog.String("version", version.String()), mlog.String("existing_version", existingVersion.String())) logger.Warn("Skipping local installation of plugin since not a newer version", mlog.String("version", version.String()), mlog.String("existing_version", existingVersion.String()))
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.skip_installation.app_error", map[string]any{"Id": manifest.Id}, "", http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.skip_installation.app_error", map[string]any{"Id": manifest.Id}, "", http.StatusInternalServerError)
} }
} }