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.
* read redis lock options from config to support custom TTL & timeout
* fix test
* fix typo
* downgrade to bsm/redislock@v0.7.2 to prevent usage of beta go-redis version
* revert test changes
* return error for invalid lock config
* update config parsing test
* udpate docs to include redis lock config
* fix test
* set default max retries to 10
* reduce default redis lock timeout to 15s
* update default TTL to 15mins
Co-authored-by: Manu Gupta <manugupt1@gmail.com>
* Reverting PR 1650
https://github.com/gomods/athens/pull/1650 was a big change to the
authentication/authorization code, which we have decided to pull
out and potentially move into a separate process/project
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
* removing commented, unused code
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
* removing more commented, unused code
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
* removing more unused code
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
* Fix sumdb/* paths when config.PathPrefix is set
http.StripPrefix will look at the entire request path when called,
if we do not include config.PathPrefix then the StripPrefix call
will never receive a valid path from the application and the user
will always get a 404 error.
There were no test where I could easily check this regression so
I also added a few endpoint tests, the last test will fail with
a 404 instead of 403 if this change in not applied.
* Update cmd/proxy/actions/app_proxy.go
Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
* Update cmd/proxy/actions/app_proxy_test.go
Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
* Update cmd/proxy/actions/app_proxy_test.go
Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
* Update cmd/proxy/actions/app_proxy_test.go
Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
* Removed unneeded import of logrus
Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
The ARG before the FROM call in multistage builds is dropped with the
previous container. We need to define it globally
Signed-off-by: Chris M <millscj01@gmail.com>
* Adding build arg for the alpine version the docker image is based on
* Actually using the arg
* Using Alpine 3.11.5
Co-authored-by: Ted Wexler <ted@stuckinacan.com>
* Update .drone.yml for Go 1.14
* Update appveyor.yml for Go 1.14
* Update Dockerfile.test for Go 1.14
* Update Dockerfile for Go 1.14
* Update scripts/build-image/Dockerfile
* add config options for redis password
* redis password test and failure test
* changed redis name and made a minimal redis.conf
add drone volume
volume fix
remove volumes from drone.
repoint redis path
Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
Co-authored-by: Marwan Sulaiman <marwan.sameer@gmail.com>
For repositories that store some files in git-lfs, the checksum will
differ for clients with and without git-lfs. Clients without git-lfs
will use the git-lfs pointer [0] for calculation, clients with will use
the real files.
This adds git-lfs to the container to match expected behaviour and
resolve checksum mismatches in these cases.
[0] https://github.com/git-lfs/git-lfs/blob/master/docs/spec.md
* Add GOLANG_VERSION arg to proxy-docker
* Set default GOLANG_VERSION to 1.13 in Makefile
* Add note in proxy Dockerfile re: GOLANG_VERSION
* Add GOLANG_VERSION to docker-compose dev target
* cmd/proxy/actions: pass NoSumPatterns to GoGetFetcher
* add gosum unit tests
* upgrade appveyor to 1.13
* fix test typo
* check appveyor version
* AppVeyor has no 1.13
* use logger