From 07902b4c91ac80042df5585e25ce60a5078016bd Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Fri, 2 Feb 2018 23:24:14 +0530 Subject: report server launch errors (#8189) When starting the server using `platform server`, errors occuring during startup are not reported in the console. The command exit with a 0 exit code (i.e. "success"), although the server failed to launch. With this change, when an error occurs while initializing the app (like a missing or invalid configuration file): - the error is printed to the console; - the command exit with a "-1" exit code. This allow shell scripts to properly detect the startup failure, and to react to it. Example of error displayed: ``` $ platform server Error: LoadConfig: Error decoding config file=config.json, err=While parsing config: invalid character ':' after top-level value, `` --- cmd/platform/server.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'cmd') diff --git a/cmd/platform/server.go b/cmd/platform/server.go index d289898da..7ac075502 100644 --- a/cmd/platform/server.go +++ b/cmd/platform/server.go @@ -28,9 +28,10 @@ const ( var MaxNotificationsPerChannelDefault int64 = 1000000 var serverCmd = &cobra.Command{ - Use: "server", - Short: "Run the Mattermost server", - RunE: runServerCmd, + Use: "server", + Short: "Run the Mattermost server", + RunE: runServerCmd, + SilenceUsage: true, } func runServerCmd(cmd *cobra.Command, args []string) error { @@ -41,11 +42,10 @@ func runServerCmd(cmd *cobra.Command, args []string) error { disableConfigWatch, _ := cmd.Flags().GetBool("disableconfigwatch") - runServer(config, disableConfigWatch) - return nil + return runServer(config, disableConfigWatch) } -func runServer(configFileLocation string, disableConfigWatch bool) { +func runServer(configFileLocation string, disableConfigWatch bool) error { options := []app.Option{app.ConfigFile(configFileLocation)} if disableConfigWatch { options = append(options, app.DisableConfigWatch) @@ -54,7 +54,7 @@ func runServer(configFileLocation string, disableConfigWatch bool) { a, err := app.New(options...) if err != nil { l4g.Error(err.Error()) - return + return err } defer a.Shutdown() @@ -172,6 +172,8 @@ func runServer(configFileLocation string, disableConfigWatch bool) { a.Jobs.StopSchedulers() a.Jobs.StopWorkers() + + return nil } func runSecurityJob(a *app.App) { -- cgit v1.2.3-1-g7c22