diff options
author | Paul Okstad <pokstad@gitlab.com> | 2019-03-06 21:44:40 +0300 |
---|---|---|
committer | Paul Okstad <pokstad@gitlab.com> | 2019-03-06 21:44:40 +0300 |
commit | 35a0d3ebf0fd0418218875a34c54beb5b4e01b34 (patch) | |
tree | d5f46a03b117eafaaeab418be4ba9e07fdd22278 | |
parent | 51e94133a6d89f1f6f2d812c0d223bd22b3df428 (diff) | |
parent | 77fee8f6cf539ceec5389a6322dbd9ade8f8676b (diff) |
Merge branch 'zj-start-without-config' into 'master'
Fix undefined logger panicing
See merge request gitlab-org/gitaly!1114
-rw-r--r-- | changelogs/unreleased/zj-start-without-config.yml | 5 | ||||
-rw-r--r-- | cmd/praefect/main.go | 36 | ||||
-rw-r--r-- | cmd/praefect/main_test.go | 13 |
3 files changed, 44 insertions, 10 deletions
diff --git a/changelogs/unreleased/zj-start-without-config.yml b/changelogs/unreleased/zj-start-without-config.yml new file mode 100644 index 000000000..4df37ca0a --- /dev/null +++ b/changelogs/unreleased/zj-start-without-config.yml @@ -0,0 +1,5 @@ +--- +title: Fix undefined logger panicing +merge_request: 1114 +author: +type: fixed diff --git a/cmd/praefect/main.go b/cmd/praefect/main.go index 6d4189e17..23e5aa89e 100644 --- a/cmd/praefect/main.go +++ b/cmd/praefect/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "errors" "flag" "fmt" "net" @@ -18,33 +19,48 @@ import ( var ( flagConfig = flag.String("config", "", "Location for the config.toml") - logger *logrus.Logger + logger = logrus.New() + + errNoConfigFile = errors.New("the config flag must be passed") ) func main() { flag.Parse() - conf, err := config.FromFile(*flagConfig) + conf, err := configure() if err != nil { - logger.Fatalf("%s", err) + logger.Fatal(err) } - if err := conf.Validate(); err != nil { + l, err := net.Listen("tcp", conf.ListenAddr) + if err != nil { logger.Fatalf("%s", err) } - logger := conf.ConfigureLogger() + logger.WithField("address", conf.ListenAddr).Info("listening at tcp address") + logger.Fatalf("%v", run(l, conf)) +} - tracing.Initialize(tracing.WithServiceName("praefect")) +func configure() (config.Config, error) { + var conf config.Config - l, err := net.Listen("tcp", conf.ListenAddr) + if *flagConfig == "" { + return conf, errNoConfigFile + } + + conf, err := config.FromFile(*flagConfig) if err != nil { - logger.Fatalf("%s", err) + return conf, fmt.Errorf("error reading config file: %v", err) } - logger.WithField("address", conf.ListenAddr).Info("listening at tcp address") + if err := conf.Validate(); err != nil { + return conf, err + } - logger.Fatalf("%v", run(l, conf)) + logger = conf.ConfigureLogger() + tracing.Initialize(tracing.WithServiceName("praefect")) + + return conf, nil } func run(l net.Listener, conf config.Config) error { diff --git a/cmd/praefect/main_test.go b/cmd/praefect/main_test.go new file mode 100644 index 000000000..65d16a86c --- /dev/null +++ b/cmd/praefect/main_test.go @@ -0,0 +1,13 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNoConfigFlag(t *testing.T) { + _, err := configure() + + assert.Equal(t, err, errNoConfigFile) +} |