коммит произвёл
GitHub
родитель
85bc354680
Коммит
017e14d4b5
@@ -91,13 +91,13 @@ func (a *App) InitServer() {
|
||||
a.srv.ShutDownPlugins()
|
||||
}
|
||||
})
|
||||
if a.Srv().runjobs {
|
||||
if a.Srv().runEssentialJobs {
|
||||
a.Srv().Go(func() {
|
||||
runLicenseExpirationCheckJob(a)
|
||||
runCheckWarnMetricStatusJob(a)
|
||||
})
|
||||
a.srv.runJobs()
|
||||
}
|
||||
a.srv.RunJobs()
|
||||
})
|
||||
}
|
||||
|
||||
@@ -140,8 +140,8 @@ func (a *App) initJobs() {
|
||||
a.srv.Jobs.Cloud = jobsCloudInterface(a.srv)
|
||||
}
|
||||
|
||||
a.srv.Jobs.Workers = a.srv.Jobs.InitWorkers()
|
||||
a.srv.Jobs.Schedulers = a.srv.Jobs.InitSchedulers()
|
||||
a.srv.Jobs.InitWorkers()
|
||||
a.srv.Jobs.InitSchedulers()
|
||||
}
|
||||
|
||||
func (a *App) TelemetryId() string {
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/jobs"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/utils"
|
||||
@@ -124,14 +125,23 @@ func (s *Server) SaveLicense(licenseBytes []byte) (*model.License, *model.AppErr
|
||||
s.ReloadConfig()
|
||||
s.InvalidateAllCaches()
|
||||
|
||||
// start job server if necessary - this handles the edge case where a license file is uploaded, but the job server
|
||||
// restart job server workers - this handles the edge case where a license file is uploaded, but the job server
|
||||
// doesn't start until the server is restarted, which prevents the 'run job now' buttons in system console from
|
||||
// functioning as expected
|
||||
if *s.Config().JobSettings.RunJobs && s.Jobs != nil && s.Jobs.Workers != nil {
|
||||
s.Jobs.StartWorkers()
|
||||
if *s.Config().JobSettings.RunJobs && s.Jobs != nil {
|
||||
if err := s.Jobs.StopWorkers(); err != nil && !errors.Is(err, jobs.ErrWorkersNotRunning) {
|
||||
mlog.Warn("Stopping job server workers failed", mlog.Err(err))
|
||||
}
|
||||
if err := s.Jobs.InitWorkers(); err != nil {
|
||||
mlog.Error("Initializing job server workers failed", mlog.Err(err))
|
||||
} else if err := s.Jobs.StartWorkers(); err != nil {
|
||||
mlog.Error("Starting job server workers failed", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
if *s.Config().JobSettings.RunScheduler && s.Jobs != nil && s.Jobs.Schedulers != nil {
|
||||
s.Jobs.StartSchedulers()
|
||||
if *s.Config().JobSettings.RunScheduler && s.Jobs != nil {
|
||||
if err := s.Jobs.StartSchedulers(); err != nil && !errors.Is(err, jobs.ErrSchedulersRunning) {
|
||||
mlog.Error("Starting job server schedulers failed", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
return license, nil
|
||||
|
||||
@@ -64,8 +64,8 @@ func ConfigStore(configStore *config.Store) Option {
|
||||
}
|
||||
}
|
||||
|
||||
func RunJobs(s *Server) error {
|
||||
s.runjobs = true
|
||||
func RunEssentialJobs(s *Server) error {
|
||||
s.runEssentialJobs = true
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -118,8 +118,8 @@ type Server struct {
|
||||
PushNotificationsHub PushNotificationsHub
|
||||
pushNotificationClient *http.Client // TODO: move this to it's own package
|
||||
|
||||
runjobs bool
|
||||
Jobs *jobs.JobServer
|
||||
runEssentialJobs bool
|
||||
Jobs *jobs.JobServer
|
||||
|
||||
clusterLeaderListeners sync.Map
|
||||
|
||||
@@ -447,8 +447,8 @@ func NewServer(options ...Option) (*Server, error) {
|
||||
|
||||
s.clusterLeaderListenerId = s.AddClusterLeaderChangedListener(func() {
|
||||
mlog.Info("Cluster leader changed. Determining if job schedulers should be running:", mlog.Bool("isLeader", s.IsLeader()))
|
||||
if s.Jobs != nil && s.Jobs.Schedulers != nil {
|
||||
s.Jobs.Schedulers.HandleClusterLeaderChange(s.IsLeader())
|
||||
if s.Jobs != nil {
|
||||
s.Jobs.HandleClusterLeaderChange(s.IsLeader())
|
||||
}
|
||||
s.setupFeatureFlags()
|
||||
})
|
||||
@@ -661,44 +661,46 @@ func maxInt(a, b int) int {
|
||||
return b
|
||||
}
|
||||
|
||||
func (s *Server) RunJobs() {
|
||||
if s.runjobs {
|
||||
s.Go(func() {
|
||||
runSecurityJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
firstRun, err := s.getFirstServerRunTimestamp()
|
||||
if err != nil {
|
||||
mlog.Warn("Fetching time of first server run failed. Setting to 'now'.")
|
||||
s.ensureFirstServerRunTimestamp()
|
||||
firstRun = utils.MillisFromTime(time.Now())
|
||||
}
|
||||
s.telemetryService.RunTelemetryJob(firstRun)
|
||||
})
|
||||
s.Go(func() {
|
||||
runSessionCleanupJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
runTokenCleanupJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
runCommandWebhookCleanupJob(s)
|
||||
})
|
||||
func (s *Server) runJobs() {
|
||||
s.Go(func() {
|
||||
runSecurityJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
firstRun, err := s.getFirstServerRunTimestamp()
|
||||
if err != nil {
|
||||
mlog.Warn("Fetching time of first server run failed. Setting to 'now'.")
|
||||
s.ensureFirstServerRunTimestamp()
|
||||
firstRun = utils.MillisFromTime(time.Now())
|
||||
}
|
||||
s.telemetryService.RunTelemetryJob(firstRun)
|
||||
})
|
||||
s.Go(func() {
|
||||
runSessionCleanupJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
runTokenCleanupJob(s)
|
||||
})
|
||||
s.Go(func() {
|
||||
runCommandWebhookCleanupJob(s)
|
||||
})
|
||||
|
||||
if complianceI := s.Compliance; complianceI != nil {
|
||||
complianceI.StartComplianceDailyJob()
|
||||
}
|
||||
if complianceI := s.Compliance; complianceI != nil {
|
||||
complianceI.StartComplianceDailyJob()
|
||||
}
|
||||
|
||||
if *s.Config().JobSettings.RunJobs && s.Jobs != nil {
|
||||
s.Jobs.StartWorkers()
|
||||
if *s.Config().JobSettings.RunJobs && s.Jobs != nil {
|
||||
if err := s.Jobs.StartWorkers(); err != nil {
|
||||
mlog.Error("Failed to start job server workers", mlog.Err(err))
|
||||
}
|
||||
if *s.Config().JobSettings.RunScheduler && s.Jobs != nil {
|
||||
s.Jobs.StartSchedulers()
|
||||
}
|
||||
if *s.Config().JobSettings.RunScheduler && s.Jobs != nil {
|
||||
if err := s.Jobs.StartSchedulers(); err != nil {
|
||||
mlog.Error("Failed to start job server schedulers", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
if *s.Config().ServiceSettings.EnableAWSMetering {
|
||||
runReportToAWSMeterJob(s)
|
||||
}
|
||||
if *s.Config().ServiceSettings.EnableAWSMetering {
|
||||
runReportToAWSMeterJob(s)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -895,9 +897,16 @@ func (s *Server) Shutdown() {
|
||||
s.StopMetricsServer()
|
||||
|
||||
// This must be done after the cluster is stopped.
|
||||
if s.Jobs != nil && s.runjobs {
|
||||
s.Jobs.StopWorkers()
|
||||
s.Jobs.StopSchedulers()
|
||||
if s.Jobs != nil {
|
||||
// For simplicity we don't check if workers and schedulers are active
|
||||
// before stopping them as both calls essentially become no-ops
|
||||
// if nothing is running.
|
||||
if err = s.Jobs.StopWorkers(); err != nil && !errors.Is(err, jobs.ErrWorkersNotRunning) {
|
||||
mlog.Warn("Failed to stop job server workers", mlog.Err(err))
|
||||
}
|
||||
if err = s.Jobs.StopSchedulers(); err != nil && !errors.Is(err, jobs.ErrSchedulersNotRunning) {
|
||||
mlog.Warn("Failed to stop job server schedulers", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
if s.Store != nil {
|
||||
|
||||
Ссылка в новой задаче
Block a user