diff options
author | Christopher Speller <crspeller@gmail.com> | 2017-08-01 05:53:42 -0700 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-08-01 08:53:42 -0400 |
commit | 0331409488083a58d66fdf58eb22cbaa924237f6 (patch) | |
tree | 781083667075eecbe6c40b7698a7ec5ad8d1216b /cmd/platform/jobserver.go | |
parent | 88f398ffddbcbb58265d085c09cb72008be3f3d5 (diff) | |
download | chat-0331409488083a58d66fdf58eb22cbaa924237f6.tar.gz chat-0331409488083a58d66fdf58eb22cbaa924237f6.tar.bz2 chat-0331409488083a58d66fdf58eb22cbaa924237f6.zip |
Add jobserver command to platform binary (#7067)
* Add jobserver command to platform binary
* Fixing jobserver config. Adding jobserver flags.
* Fixing govet in makefile
Diffstat (limited to 'cmd/platform/jobserver.go')
-rw-r--r-- | cmd/platform/jobserver.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/platform/jobserver.go b/cmd/platform/jobserver.go new file mode 100644 index 000000000..73fca9961 --- /dev/null +++ b/cmd/platform/jobserver.go @@ -0,0 +1,62 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. +package main + +import ( + "os" + "os/signal" + "syscall" + + l4g "github.com/alecthomas/log4go" + "github.com/mattermost/platform/jobs" + "github.com/mattermost/platform/store" + "github.com/mattermost/platform/utils" + "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.") +} + +func jobserverCmdF(cmd *cobra.Command, args []string) { + // Options + noJobs, _ := cmd.Flags().GetBool("nojobs") + noSchedule, _ := cmd.Flags().GetBool("noschedule") + + // Initialize + utils.InitAndLoadConfig("config.json") + defer l4g.Close() + + jobs.Srv.Store = store.NewLayeredStore() + defer jobs.Srv.Store.Close() + + jobs.Srv.LoadLicense() + + // Run jobs + l4g.Info("Starting Mattermost job server") + if !noJobs { + jobs.Srv.StartWorkers() + } + if !noSchedule { + jobs.Srv.StartSchedulers() + } + + var signalChan chan os.Signal = make(chan os.Signal) + signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + <-signalChan + + // Cleanup anything that isn't handled by a defer statement + l4g.Info("Stopping Mattermost job server") + + jobs.Srv.StopSchedulers() + jobs.Srv.StopWorkers() + + l4g.Info("Stopped Mattermost job server") +} |