github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/cmd/mattermost/commands/jobserver.go (about) 1 // Copyright (c) 2015-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/spf13/cobra" 12 13 "github.com/mattermost/mattermost-server/v5/audit" 14 "github.com/mattermost/mattermost-server/v5/config" 15 "github.com/mattermost/mattermost-server/v5/mlog" 16 ) 17 18 var JobserverCmd = &cobra.Command{ 19 Use: "jobserver", 20 Short: "Start the Mattermost job server", 21 RunE: jobserverCmdF, 22 } 23 24 func init() { 25 JobserverCmd.Flags().Bool("nojobs", false, "Do not run jobs on this jobserver.") 26 JobserverCmd.Flags().Bool("noschedule", false, "Do not schedule jobs from this jobserver.") 27 28 RootCmd.AddCommand(JobserverCmd) 29 } 30 31 func jobserverCmdF(command *cobra.Command, args []string) error { 32 // Options 33 noJobs, _ := command.Flags().GetBool("nojobs") 34 noSchedule, _ := command.Flags().GetBool("noschedule") 35 36 // Initialize 37 a, err := initDBCommandContext(getConfigDSN(command, config.GetEnvironment()), false) 38 if err != nil { 39 return err 40 } 41 defer a.Srv().Shutdown() 42 43 a.Srv().LoadLicense() 44 a.InitServer() 45 46 // Run jobs 47 mlog.Info("Starting Mattermost job server") 48 defer mlog.Info("Stopped Mattermost job server") 49 50 if !noJobs { 51 a.Srv().Jobs.StartWorkers() 52 defer a.Srv().Jobs.StopWorkers() 53 } 54 if !noSchedule { 55 a.Srv().Jobs.StartSchedulers() 56 defer a.Srv().Jobs.StopSchedulers() 57 } 58 59 if !noJobs || !noSchedule { 60 auditRec := a.MakeAuditRecord("jobServer", audit.Success) 61 a.LogAuditRec(auditRec, nil) 62 } 63 64 signalChan := make(chan os.Signal, 1) 65 signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) 66 <-signalChan 67 68 // Cleanup anything that isn't handled by a defer statement 69 mlog.Info("Stopping Mattermost job server") 70 71 return nil 72 }