Documentation ¶
Index ¶
Constants ¶
const ( // GitalyDataPrefix is the top-level directory we use to store system // (non-user) data. We need to be careful that this path does not clash // with any directory name that could be provided by a user. The '+' // character is not allowed in GitLab namespaces or repositories. GitalyDataPrefix = "+gitaly" )
Variables ¶
This section is empty.
Functions ¶
func NewLocator ¶
NewLocator returns locator based on the provided configuration struct. As it creates a shallow copy of the provided struct changes made into provided struct may affect result of methods implemented by it.
Types ¶
type Cfg ¶
type Cfg struct { SocketPath string `toml:"socket_path" split_words:"true"` ListenAddr string `toml:"listen_addr" split_words:"true"` TLSListenAddr string `toml:"tls_listen_addr" split_words:"true"` PrometheusListenAddr string `toml:"prometheus_listen_addr" split_words:"true"` BinDir string `toml:"bin_dir"` RuntimeDir string `toml:"runtime_dir"` Git Git `toml:"git" envconfig:"git"` Storages []Storage `toml:"storage" envconfig:"storage"` Logging Logging `toml:"logging" envconfig:"logging"` Prometheus prometheus.Config `toml:"prometheus"` Auth auth.Config `toml:"auth"` TLS TLS `toml:"tls"` Ruby Ruby `toml:"gitaly-ruby"` Gitlab Gitlab `toml:"gitlab"` GitlabShell GitlabShell `toml:"gitlab-shell"` Hooks Hooks `toml:"hooks"` Concurrency []Concurrency `toml:"concurrency"` RateLimiting []RateLimiting `toml:"rate_limiting"` GracefulRestartTimeout Duration `toml:"graceful_restart_timeout"` InternalSocketDir string `toml:"internal_socket_dir"` DailyMaintenance DailyJob `toml:"daily_maintenance"` Cgroups cgroups.Config `toml:"cgroups"` PackObjectsCache StreamCacheConfig `toml:"pack_objects_cache"` }
Cfg is a container for all config derived from config.toml.
func Load ¶
Load initializes the Config variable from file and the environment.
Environment variables take precedence over the file.
func (*Cfg) ConfigureRuby ¶
ConfigureRuby validates the gitaly-ruby configuration and sets default values.
func (*Cfg) GitalyInternalSocketPath ¶
GitalyInternalSocketPath is the path to the internal gitaly socket
func (*Cfg) StoragePath ¶
StoragePath looks up the base path for storageName. The second boolean return value indicates if anything was found.
type Concurrency ¶
type Concurrency struct { // RPC is the name of the RPC to set concurrency limits for RPC string `toml:"rpc"` // MaxPerRepo is the maximum number of concurrent calls for a given repository MaxPerRepo int `toml:"max_per_repo"` // MaxQueueSize is the maximum number of requests in the queue waiting to be picked up // after which subsequent requests will return with an error. MaxQueueSize int `toml:"max_queue_size"` // MaxQueueWait is the maximum time a request can remain in the concurrency queue // waiting to be picked up by Gitaly MaxQueueWait Duration `toml:"max_queue_wait"` }
Concurrency allows endpoints to be limited to a maximum concurrency per repo. Requests that come in after the maximum number of concurrent requests are in progress will wait in a queue that is bounded by MaxQueueSize.
type DailyJob ¶
type DailyJob struct { Hour uint `toml:"start_hour"` Minute uint `toml:"start_minute"` Duration Duration `toml:"duration"` Storages []string `toml:"storages"` // Disabled will completely disable a daily job, even in cases where a // default schedule is implied Disabled bool `toml:"disabled"` }
DailyJob enables a daily task to be scheduled for specific storages
type Duration ¶
Duration is a trick to let our TOML library parse durations from strings.
func (*Duration) Duration ¶
nolint: revive,stylecheck // This is unintentionally missing documentation.
func (Duration) MarshalText ¶
nolint: revive,stylecheck // This is unintentionally missing documentation.
func (*Duration) UnmarshalText ¶
nolint: revive,stylecheck // This is unintentionally missing documentation.
type Git ¶
type Git struct { UseBundledBinaries bool `toml:"use_bundled_binaries"` BinPath string `toml:"bin_path"` CatfileCacheSize int `toml:"catfile_cache_size"` Config []GitConfig `toml:"config"` }
Git contains the settings for the Git executable
type Gitlab ¶
type Gitlab struct { URL string `toml:"url" json:"url"` RelativeURLRoot string `toml:"relative_url_root" json:"relative_url_root"` // For UNIX sockets only HTTPSettings HTTPSettings `toml:"http-settings" json:"http_settings"` SecretFile string `toml:"secret_file" json:"secret_file"` }
Gitlab contains settings required to connect to the Gitlab api
type GitlabShell ¶
type GitlabShell struct {
Dir string `toml:"dir" json:"dir"`
}
GitlabShell contains the settings required for executing `gitlab-shell`
type HTTPSettings ¶
type HTTPSettings struct { ReadTimeout int `toml:"read_timeout" json:"read_timeout"` User string `toml:"user" json:"user"` Password string `toml:"password" json:"password"` CAFile string `toml:"ca_file" json:"ca_file"` CAPath string `toml:"ca_path" json:"ca_path"` SelfSigned bool `toml:"self_signed_cert" json:"self_signed_cert"` }
nolint: revive,stylecheck // This is unintentionally missing documentation.
type Hooks ¶
type Hooks struct {
CustomHooksDir string `toml:"custom_hooks_dir" json:"custom_hooks_dir"`
}
Hooks contains the settings required for hooks
type Logging ¶
type Logging struct { internallog.Config Sentry RubySentryDSN string `toml:"ruby_sentry_dsn"` }
Logging contains the logging configuration for Gitaly
type RateLimiting ¶ added in v14.10.0
type RateLimiting struct { // RPC is the full name of the RPC including the service name RPC string `toml:"rpc"` // Interval sets the interval with which the token bucket will // be refilled to what is configured in Burst. Interval time.Duration `toml:"interval"` // Burst sets the capacity of the token bucket (see above). Burst int `toml:"burst"` }
RateLimiting allows endpoints to be limited to a maximum request rate per second. The rate limiter uses a concept of a "token bucket". In order to serve a request, a token is retrieved from the token bucket. The size of the token bucket is configured through the Burst value, while the rate at which the token bucket is refilled per second is configured through the RequestsPerSecond value.
type Ruby ¶
type Ruby struct { Dir string `toml:"dir"` MaxRSS int `toml:"max_rss"` GracefulRestartTimeout Duration `toml:"graceful_restart_timeout"` RestartDelay Duration `toml:"restart_delay"` NumWorkers int `toml:"num_workers"` LinguistLanguagesPath string `toml:"linguist_languages_path"` RuggedGitConfigSearchPath string `toml:"rugged_git_config_search_path"` }
Ruby contains setting for Ruby worker processes
type Sentry ¶
Sentry is a sentry.Config. We redefine this type to a different name so we can embed both structs into Logging
type StreamCacheConfig ¶ added in v14.2.0
type StreamCacheConfig struct { Enabled bool `toml:"enabled"` // Default: false Dir string `toml:"dir"` // Default: <FIRST STORAGE PATH>/+gitaly/PackObjectsCache MaxAge Duration `toml:"max_age"` // Default: 5m }
StreamCacheConfig contains settings for a streamcache instance.