github.com/gigforks/mattermost-server@v4.9.1-0.20180619094218-800d97fa55d0+incompatible/cmd/commands/jobserver.go (about) 1 // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package commands 5 6 import ( 7 "os" 8 "os/signal" 9 "syscall" 10 11 "github.com/mattermost/mattermost-server/cmd" 12 "github.com/mattermost/mattermost-server/mlog" 13 "github.com/spf13/cobra" 14 ) 15 16 var JobserverCmd = &cobra.Command{ 17 Use: "jobserver", 18 Short: "Start the Mattermost job server", 19 Run: jobserverCmdF, 20 } 21 22 func init() { 23 JobserverCmd.Flags().Bool("nojobs", false, "Do not run jobs on this jobserver.") 24 JobserverCmd.Flags().Bool("noschedule", false, "Do not schedule jobs from this jobserver.") 25 26 cmd.RootCmd.AddCommand(JobserverCmd) 27 } 28 29 func jobserverCmdF(command *cobra.Command, args []string) { 30 // Options 31 noJobs, _ := command.Flags().GetBool("nojobs") 32 noSchedule, _ := command.Flags().GetBool("noschedule") 33 34 // Initialize 35 a, err := cmd.InitDBCommandContext("config.json") 36 if err != nil { 37 panic(err.Error()) 38 } 39 defer a.Shutdown() 40 41 a.LoadLicense() 42 43 // Run jobs 44 mlog.Info("Starting Mattermost job server") 45 if !noJobs { 46 a.Jobs.StartWorkers() 47 } 48 if !noSchedule { 49 a.Jobs.StartSchedulers() 50 } 51 52 signalChan := make(chan os.Signal, 1) 53 signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) 54 <-signalChan 55 56 // Cleanup anything that isn't handled by a defer statement 57 mlog.Info("Stopping Mattermost job server") 58 59 a.Jobs.StopSchedulers() 60 a.Jobs.StopWorkers() 61 62 mlog.Info("Stopped Mattermost job server") 63 }