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-02-23 12:44:09 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2021-02-23 13:18:39 +0300
commit229fbec595c02ca1a2ced5ebb4d1df8b4de7bff0 (patch)
tree731e785c69937a39989425aaf682e6f399b4f6bd
parent771df64aaf511cc3c64d7b55aee2d961941bfdab (diff)
Removal of the config.Config from production code
After a couple rounds of refactorings we can completely remove config.Config global variable from the production code. Now it should be passed as a parameter or injected as a dependency to the places where it is required. Now we mark it as deprecated. Part of: https://gitlab.com/gitlab-org/gitaly/-/issues/2699
-rw-r--r--cmd/gitaly/main.go43
-rw-r--r--internal/gitaly/config/config.go2
2 files changed, 24 insertions, 21 deletions
diff --git a/cmd/gitaly/main.go b/cmd/gitaly/main.go
index 8cce4178b..6d68bf57c 100644
--- a/cmd/gitaly/main.go
+++ b/cmd/gitaly/main.go
@@ -33,24 +33,23 @@ var (
flagVersion = flag.Bool("version", false, "Print version and exit")
)
-func loadConfig(configPath string) error {
+func loadConfig(configPath string) (config.Cfg, error) {
cfgFile, err := os.Open(configPath)
if err != nil {
- return err
+ return config.Cfg{}, err
}
defer cfgFile.Close()
cfg, err := config.Load(cfgFile)
if err != nil {
- return err
+ return config.Cfg{}, err
}
if err := cfg.Validate(); err != nil {
- return err
+ return config.Cfg{}, err
}
- config.Config = cfg
- return nil
+ return cfg, nil
}
func flagUsage() {
@@ -75,34 +74,36 @@ func main() {
}
log.Info("Starting Gitaly", "version", version.GetVersionString())
- if err := configure(flag.Arg(0)); err != nil {
+ cfg, err := configure(flag.Arg(0))
+ if err != nil {
log.Fatal(err)
}
- log.WithError(run(config.Config)).Error("shutting down")
+ log.WithError(run(cfg)).Error("shutting down")
log.Info("Gitaly stopped")
}
-func configure(configPath string) error {
- if err := loadConfig(configPath); err != nil {
- return fmt.Errorf("load config: config_path %q: %w", configPath, err)
+func configure(configPath string) (config.Cfg, error) {
+ cfg, err := loadConfig(configPath)
+ if err != nil {
+ return config.Cfg{}, fmt.Errorf("load config: config_path %q: %w", configPath, err)
}
- glog.Configure(config.Config.Logging.Format, config.Config.Logging.Level)
+ glog.Configure(cfg.Logging.Format, cfg.Logging.Level)
- if err := cgroups.NewManager(config.Config.Cgroups).Setup(); err != nil {
- return fmt.Errorf("failed setting up cgroups: %w", err)
+ if err := cgroups.NewManager(cfg.Cgroups).Setup(); err != nil {
+ return config.Cfg{}, fmt.Errorf("failed setting up cgroups: %w", err)
}
- if err := verifyGitVersion(config.Config); err != nil {
- return err
+ if err := verifyGitVersion(cfg); err != nil {
+ return config.Cfg{}, err
}
- sentry.ConfigureSentry(version.GetVersion(), sentry.Config(config.Config.Logging.Sentry))
- config.Config.Prometheus.Configure()
- config.ConfigureConcurrencyLimits(config.Config)
+ sentry.ConfigureSentry(version.GetVersion(), sentry.Config(cfg.Logging.Sentry))
+ cfg.Prometheus.Configure()
+ config.ConfigureConcurrencyLimits(cfg)
tracing.Initialize(tracing.WithServiceName("gitaly"))
- return nil
+ return cfg, nil
}
func verifyGitVersion(cfg config.Cfg) error {
@@ -244,7 +245,7 @@ func run(cfg config.Cfg) error {
defer shutdownWorkers()
defer func() {
- if err := cgroups.NewManager(config.Config.Cgroups).Cleanup(); err != nil {
+ if err := cgroups.NewManager(cfg.Cgroups).Cleanup(); err != nil {
log.WithError(err).Warn("error cleaning up cgroups")
}
}()
diff --git a/internal/gitaly/config/config.go b/internal/gitaly/config/config.go
index 56e0d0d05..428e0b165 100644
--- a/internal/gitaly/config/config.go
+++ b/internal/gitaly/config/config.go
@@ -27,6 +27,8 @@ import (
var (
// Config stores the global configuration
+ // Deprecated: please do not use global variable and pass preconfigured Cfg as a parameter
+ // where it is needed.
Config Cfg
hooks []func(*Cfg) error