mirror of
https://github.com/gomods/athens
synced 2026-02-03 07:30:32 +00:00
* feat: add golangci-lint linting * chore: fix linter issues * feat: add linting into the workflow * docs: update lint docs * fix: cr suggestions * fix: remove old formatting and vetting scripts * fix: add docker make target * fix: action go caching * fix: depreciated actions checkout version * fix: cr suggestion * fix: cr suggestions --------- Co-authored-by: Manu Gupta <manugupt1@gmail.com>
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package config
|
|
|
|
// SingleFlight holds the various
|
|
// backend configurations for a distributed
|
|
// lock or single flight mechanism.
|
|
type SingleFlight struct {
|
|
Etcd *Etcd
|
|
Redis *Redis
|
|
RedisSentinel *RedisSentinel
|
|
}
|
|
|
|
// Etcd holds client side configuration
|
|
// that helps Athens connect to the
|
|
// Etcd backends.
|
|
type Etcd struct {
|
|
Endpoints string `envconfig:"ATHENS_ETCD_ENDPOINTS"`
|
|
}
|
|
|
|
// Redis holds the client side configuration
|
|
// to connect to redis as a SingleFlight implementation.
|
|
type Redis struct {
|
|
Endpoint string `envconfig:"ATHENS_REDIS_ENDPOINT"`
|
|
Password string `envconfig:"ATHENS_REDIS_PASSWORD"`
|
|
LockConfig *RedisLockConfig
|
|
}
|
|
|
|
// RedisSentinel is the configuration for using redis with sentinel
|
|
// for SingleFlight.
|
|
type RedisSentinel struct {
|
|
Endpoints []string `envconfig:"ATHENS_REDIS_SENTINEL_ENDPOINTS"`
|
|
MasterName string `envconfig:"ATHENS_REDIS_SENTINEL_MASTER_NAME"`
|
|
SentinelPassword string `envconfig:"ATHENS_REDIS_SENTINEL_PASSWORD"`
|
|
LockConfig *RedisLockConfig
|
|
}
|
|
|
|
// RedisLockConfig is the configuration for redis locking.
|
|
type RedisLockConfig struct {
|
|
Timeout int `envconfig:"ATHENS_REDIS_LOCK_TIMEOUT"`
|
|
TTL int `envconfig:"ATHENS_REDIS_LOCK_TTL"`
|
|
MaxRetries int `envconfig:"ATHENS_REDIS_LOCK_MAX_RETRIES"`
|
|
}
|
|
|
|
// DefaultRedisLockConfig returns the default redis locking configuration.
|
|
func DefaultRedisLockConfig() *RedisLockConfig {
|
|
return &RedisLockConfig{
|
|
TTL: 900,
|
|
Timeout: 15,
|
|
MaxRetries: 10,
|
|
}
|
|
}
|