Fix upstream timeout for large downloads
Some checks failed
docker-release / build-and-push (push) Failing after 25m53s
Some checks failed
docker-release / build-and-push (push) Failing after 25m53s
This commit is contained in:
@@ -31,9 +31,12 @@ func NewUpstreamClient(cfg *config.Config) *http.Client {
|
||||
timeout = cfg.Global.UpstreamTimeout.DurationValue()
|
||||
}
|
||||
|
||||
transport := defaultTransport.Clone()
|
||||
// Use UpstreamTimeout as ResponseHeaderTimeout to avoid killing long streaming downloads.
|
||||
transport.ResponseHeaderTimeout = timeout
|
||||
|
||||
return &http.Client{
|
||||
Timeout: timeout,
|
||||
Transport: defaultTransport.Clone(),
|
||||
Transport: transport,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,12 @@ func TestNewUpstreamClientUsesConfigTimeout(t *testing.T) {
|
||||
}
|
||||
|
||||
client := NewUpstreamClient(cfg)
|
||||
if client.Timeout != 45*time.Second {
|
||||
t.Fatalf("expected timeout 45s, got %s", client.Timeout)
|
||||
transport, ok := client.Transport.(*http.Transport)
|
||||
if !ok {
|
||||
t.Fatalf("expected *http.Transport, got %T", client.Transport)
|
||||
}
|
||||
if transport.ResponseHeaderTimeout != 45*time.Second {
|
||||
t.Fatalf("expected response header timeout 45s, got %s", transport.ResponseHeaderTimeout)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user