diff options
author | Martin Kraft <martinkraft@gmail.com> | 2018-05-18 08:23:02 -0400 |
---|---|---|
committer | Martin Kraft <martinkraft@gmail.com> | 2018-05-18 08:23:02 -0400 |
commit | 78d95a25f799f818de03e9aa58a131407b6c122f (patch) | |
tree | 2321e7967a0d9e05d96536e9ae9cff40f98d53f3 /cmd/mattermost/commands/jobserver.go | |
parent | 8a0702e0c31014c5f2f8bad8c9e32e9343252469 (diff) | |
parent | e591fcf3d8c61c3df7d1d8457ae7b72bfe3abf1b (diff) | |
download | chat-78d95a25f799f818de03e9aa58a131407b6c122f.tar.gz chat-78d95a25f799f818de03e9aa58a131407b6c122f.tar.bz2 chat-78d95a25f799f818de03e9aa58a131407b6c122f.zip |
Merge remote-tracking branch 'origin/master' into advanced-permissions-phase-2
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") +} |