mirror of
https://github.com/gomods/athens
synced 2026-02-03 08:40:31 +00:00
Make shutdown timeout configurable (#1806)
Currently, when shutting down the server (via SIGINT or SIGTERM), the shutdown closes any open connections after only 10 seconds (via a context.WithTimeout). This does not provie a lot of time for longer operations, such as listing versions, or downloading a larger module zip file. When running in Kubernetes, and scaling instances or changing config, this causes a lot of dropped connections and gateway errors. 10 seconds is arguably much too short, and should be configurable. This commit increases that default to 60 seconds, and adds a config variable to allow users to specify their desired timeout.
This commit is contained in:
@@ -56,6 +56,7 @@ type Config struct {
|
||||
SingleFlightType string `envconfig:"ATHENS_SINGLE_FLIGHT_TYPE"`
|
||||
RobotsFile string `envconfig:"ATHENS_ROBOTS_FILE"`
|
||||
IndexType string `envconfig:"ATHENS_INDEX_TYPE"`
|
||||
ShutdownTimeout int `validate:"min=0" envconfig:"ATHENS_SHUTDOWN_TIMEOUT"`
|
||||
SingleFlight *SingleFlight
|
||||
Storage *Storage
|
||||
Index *Index
|
||||
@@ -165,6 +166,7 @@ func defaultConfig() *Config {
|
||||
NetworkMode: "strict",
|
||||
RobotsFile: "robots.txt",
|
||||
IndexType: "none",
|
||||
ShutdownTimeout: 60,
|
||||
SingleFlight: &SingleFlight{
|
||||
Etcd: &Etcd{"localhost:2379,localhost:22379,localhost:32379"},
|
||||
Redis: &Redis{"127.0.0.1:6379", "", DefaultRedisLockConfig()},
|
||||
|
||||
@@ -314,6 +314,7 @@ func TestParseExampleConfig(t *testing.T) {
|
||||
DownloadMode: "sync",
|
||||
RobotsFile: "robots.txt",
|
||||
IndexType: "none",
|
||||
ShutdownTimeout: 60,
|
||||
Index: &Index{},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user