Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Strokov <pstrokov@gitlab.com>2021-01-31 19:28:45 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2021-02-03 17:37:47 +0300
commit5f5c0c550f7aa285c2f7981b6fdf57b84c24c504 (patch)
tree8747a2b6a8adafb4d6dfb2242ac0cdcd8fefb677 /cmd/gitaly
parent25cb6c09c2ce6ccb81d6f5367eeca0d86d813140 (diff)
Fix usage of the Fatal call
The Fatal function calls os.Exit(1) internally. It leads to immediate process termination and no deferred funcs are called. It is replaced with other option that better applies in the context.
Diffstat (limited to 'cmd/gitaly')
-rw-r--r--cmd/gitaly/main.go54
1 files changed, 30 insertions, 24 deletions
diff --git a/cmd/gitaly/main.go b/cmd/gitaly/main.go
index 0a61756cb..cdd2d9785 100644
--- a/cmd/gitaly/main.go
+++ b/cmd/gitaly/main.go
@@ -73,23 +73,20 @@ func main() {
}
log.Info("Starting Gitaly", "version", version.GetVersionString())
- if err := exec(); err != nil {
+ if err := configure(flag.Arg(0)); err != nil {
log.Fatal(err)
}
+ log.WithError(run(config.Config)).Error("shutting down")
log.Info("Gitaly stopped")
}
-func exec() error {
- configPath := flag.Arg(0)
+func configure(configPath string) error {
if err := loadConfig(configPath); err != nil {
return fmt.Errorf("load config: config_path %q: %w", configPath, err)
}
glog.Configure(config.Config.Logging.Format, config.Config.Logging.Level)
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
cgroupsManager := cgroups.NewManager(config.Config.Cgroups)
if err := cgroupsManager.Setup(); err != nil {
return fmt.Errorf("failed setting up cgroups: %w", err)
@@ -100,39 +97,48 @@ func exec() error {
}
}()
+ if err := verifyGitVersion(); err != nil {
+ return err
+ }
+
+ sentry.ConfigureSentry(version.GetVersion(), sentry.Config(config.Config.Logging.Sentry))
+ config.Config.Prometheus.Configure()
+ config.ConfigureConcurrencyLimits(config.Config)
+ tracing.Initialize(tracing.WithServiceName("gitaly"))
+
+ return nil
+}
+
+func verifyGitVersion() error {
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
gitVersion, err := git.Version(ctx)
if err != nil {
- return fmt.Errorf("Git version detection: %w", err)
+ return fmt.Errorf("git version detection: %w", err)
}
supported, err := git.SupportedVersion(gitVersion)
if err != nil {
- return fmt.Errorf("Git version comparison: %w", err)
+ return fmt.Errorf("git version comparison: %w", err)
}
if !supported {
return fmt.Errorf("unsupported Git version: %q", gitVersion)
}
+ return nil
+}
+
+func run(cfg config.Cfg) error {
+ tempdir.StartCleaning(cfg.Storages, time.Hour)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
b, err := bootstrap.New()
if err != nil {
return fmt.Errorf("init bootstrap: %w", err)
}
- sentry.ConfigureSentry(version.GetVersion(), sentry.Config(config.Config.Logging.Sentry))
- config.Config.Prometheus.Configure()
- config.ConfigureConcurrencyLimits(config.Config)
- tracing.Initialize(tracing.WithServiceName("gitaly"))
-
- tempdir.StartCleaning(config.Config.Storages, time.Hour)
-
- log.WithError(run(ctx, config.Config, b)).Error("shutting down")
- return nil
-}
-
-func run(ctx context.Context, cfg config.Cfg, b *bootstrap.Bootstrap) error {
- var gitlabAPI hook.GitlabAPI
- var err error
-
transactionManager := transaction.NewManager(cfg)
prometheus.MustRegister(transactionManager)
@@ -143,7 +149,7 @@ func run(ctx context.Context, cfg config.Cfg, b *bootstrap.Bootstrap) error {
if config.SkipHooks() {
log.Warn("skipping GitLab API client creation since hooks are bypassed via GITALY_TESTING_NO_GIT_HOOKS")
} else {
- gitlabAPI, err = hook.NewGitlabAPI(cfg.Gitlab, cfg.TLS)
+ gitlabAPI, err := hook.NewGitlabAPI(cfg.Gitlab, cfg.TLS)
if err != nil {
return fmt.Errorf("could not create GitLab API client: %w", err)
}