Stop plugin healthchecks before shutting down plugins (#11972)

* cancel plugin check when shutdown

* move to top

* stop healthcheck job only once, and if started

* whitespace
Этот коммит содержится в:
Carlos Tadeu Panato Junior
2019-08-29 20:36:38 +02:00
коммит произвёл Saturnino Abril
родитель 2980d341d4
Коммит 9e9f1bb2aa
2 изменённых файлов: 12 добавлений и 4 удалений

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

@@ -284,6 +284,10 @@ func (env *Environment) RestartPlugin(id string) error {
// Shutdown deactivates all plugins and gracefully shuts down the environment.
func (env *Environment) Shutdown() {
if env.pluginHealthCheckJob != nil {
env.pluginHealthCheckJob.Cancel()
}
env.registeredPlugins.Range(func(key, value interface{}) bool {
rp := value.(*registeredPlugin)

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

@@ -5,6 +5,7 @@ package plugin
import (
"fmt"
"sync"
"time"
"github.com/mattermost/mattermost-server/mlog"
@@ -19,9 +20,10 @@ const (
)
type PluginHealthCheckJob struct {
cancel chan struct{}
cancelled chan struct{}
env *Environment
cancel chan struct{}
cancelled chan struct{}
cancelOnce sync.Once
env *Environment
}
// InitPluginHealthCheckJob starts a new job if one is not running and is set to enabled, or kills an existing one if set to disabled.
@@ -125,7 +127,9 @@ func newPluginHealthCheckJob(env *Environment) *PluginHealthCheckJob {
}
func (job *PluginHealthCheckJob) Cancel() {
close(job.cancel)
job.cancelOnce.Do(func() {
close(job.cancel)
})
<-job.cancelled
}