From 9cac66b37885a5d9c2efcfe80cc499103008215c Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Wed, 17 Jul 2024 23:26:11 +0800 Subject: [PATCH] chore: DefaultHTTPTimeout can be configured via the environment variable Signed-off-by: 0xff-dev --- pkg/getter/getter.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/getter/getter.go b/pkg/getter/getter.go index 45ab4da7e..44bfffb98 100644 --- a/pkg/getter/getter.go +++ b/pkg/getter/getter.go @@ -19,6 +19,8 @@ package getter import ( "bytes" "net/http" + "os" + "strconv" "time" "github.com/pkg/errors" @@ -183,16 +185,26 @@ const ( // The cost timeout references curl's default connection timeout. // https://github.com/curl/curl/blob/master/lib/connect.h#L40C21-L40C21 // The helm commands are usually executed manually. Considering the acceptable waiting time, we reduced the entire request time to 120s. - DefaultHTTPTimeout = 120 + defaultHTTPTimeout = 120 ) -var defaultOptions = []Option{WithTimeout(time.Second * DefaultHTTPTimeout)} +func GetDefaultHTTPTimeout() int { + if v, err := strconv.Atoi(os.Getenv("HELM_DEFAULT_HTTP_TIMEOUT")); err == nil { + return v + } + return defaultHTTPTimeout +} + +func DefaultOptions() []Option { + return []Option{WithTimeout(time.Second * time.Duration(GetDefaultHTTPTimeout()))} +} var httpProvider = Provider{ Schemes: []string{"http", "https"}, New: func(options ...Option) (Getter, error) { - options = append(options, defaultOptions...) - return NewHTTPGetter(options...) + newOptions := DefaultOptions() + newOptions = append(newOptions, options...) + return NewHTTPGetter(newOptions...) }, }