diff options
author | Christopher Speller <crspeller@gmail.com> | 2018-05-17 12:40:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-17 12:40:40 -0700 |
commit | 11cbb597471127c1b29e78e6cad0a1a4d93ea24c (patch) | |
tree | 0eceb950872c7234348f0b41d4492073908840d0 /cmd/mattermost/commands/jobserver.go | |
parent | 1f6c271b3bedd6656ae7155714423b1b39a669c1 (diff) | |
download | chat-11cbb597471127c1b29e78e6cad0a1a4d93ea24c.tar.gz chat-11cbb597471127c1b29e78e6cad0a1a4d93ea24c.tar.bz2 chat-11cbb597471127c1b29e78e6cad0a1a4d93ea24c.zip |
Renaming platform binary to mattermost. (#8801)
Diffstat (limited to 'cmd/mattermost/commands/jobserver.go')
-rw-r--r-- | cmd/mattermost/commands/jobserver.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/mattermost/commands/jobserver.go b/cmd/mattermost/commands/jobserver.go new file mode 100644 index 000000000..43a21d61f --- /dev/null +++ b/cmd/mattermost/commands/jobserver.go @@ -0,0 +1,62 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package commands + +import ( + "os" + "os/signal" + "syscall" + + "github.com/mattermost/mattermost-server/mlog" + "github.com/spf13/cobra" +) + +var JobserverCmd = &cobra.Command{ + Use: "jobserver", + Short: "Start the Mattermost job server", + Run: jobserverCmdF, +} + +func init() { + JobserverCmd.Flags().Bool("nojobs", false, "Do not run jobs on this jobserver.") + JobserverCmd.Flags().Bool("noschedule", false, "Do not schedule jobs from this jobserver.") + + RootCmd.AddCommand(JobserverCmd) +} + +func jobserverCmdF(command *cobra.Command, args []string) { + // Options + noJobs, _ := command.Flags().GetBool("nojobs") + noSchedule, _ := command.Flags().GetBool("noschedule") + + // Initialize + a, err := InitDBCommandContext("config.json") + if err != nil { + panic(err.Error()) + } + defer a.Shutdown() + + a.LoadLicense() + + // Run jobs + mlog.Info("Starting Mattermost job server") + if !noJobs { + a.Jobs.StartWorkers() + } + if !noSchedule { + a.Jobs.StartSchedulers() + } + + signalChan := make(chan os.Signal, 1) + signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + <-signalChan + + // Cleanup anything that isn't handled by a defer statement + mlog.Info("Stopping Mattermost job server") + + a.Jobs.StopSchedulers() + a.Jobs.StopWorkers() + + mlog.Info("Stopped Mattermost job server") +} |