From 93572e53181b5a614c2874bd00b7a38a02de58d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 2 Dec 2021 14:13:24 +0100 Subject: [PATCH] resources: Add timeout to the HTTP request in Get Workaround for https://github.com/golang/go/issues/49366 --- .gitignore | 1 + cache/filecache/filecache_test.go | 2 +- resources/resource_factories/create/create.go | 9 +++++++++ tpl/data/resources_test.go | 3 +-- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d3ef0199195..1b78398ccbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /hugo docs/public* /.idea +.vscode/* hugo.exe *.test *.prof diff --git a/cache/filecache/filecache_test.go b/cache/filecache/filecache_test.go index 6a051a26495..6ac36a5c127 100644 --- a/cache/filecache/filecache_test.go +++ b/cache/filecache/filecache_test.go @@ -276,7 +276,7 @@ func TestFileCacheReadOrCreateErrorInRead(t *testing.T) { } } - cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, "") + cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, 0, "") const id = "a32" diff --git a/resources/resource_factories/create/create.go b/resources/resource_factories/create/create.go index 8edf501f785..9b8d73ad478 100644 --- a/resources/resource_factories/create/create.go +++ b/resources/resource_factories/create/create.go @@ -18,6 +18,7 @@ package create import ( "bufio" "bytes" + "context" "fmt" "io" "io/ioutil" @@ -180,6 +181,14 @@ func (c *Client) FromRemote(uri string, options map[string]interface{}) (resourc } addUserProvidedHeaders(headers, req) } + + // Workaround for https://github.com/golang/go/issues/49366 + // This is the entire lifetime of the request. + ctx, cancel := context.WithTimeout(req.Context(), 30*time.Second) + defer cancel() + + req = req.WithContext(ctx) + res, err := c.httpClient.Do(req) if err != nil { return nil, err diff --git a/tpl/data/resources_test.go b/tpl/data/resources_test.go index 1bf6d769fa4..a1ce9ecb657 100644 --- a/tpl/data/resources_test.go +++ b/tpl/data/resources_test.go @@ -34,7 +34,6 @@ import ( "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/langs" "github.com/spf13/afero" - ) func TestScpGetLocal(t *testing.T) { @@ -87,7 +86,7 @@ func TestScpGetRemote(t *testing.T) { t.Parallel() c := qt.New(t) fs := new(afero.MemMapFs) - cache := filecache.NewCache(fs, 100, "") + cache := filecache.NewCache(fs, 100, 0, "") tests := []struct { path string