diff options
| author | 2022-05-26 13:38:41 +0200 | |
|---|---|---|
| committer | 2022-05-26 13:38:41 +0200 | |
| commit | 1cdc163276f3437645c0b2c01602e53fa2292c46 (patch) | |
| tree | 98d21b38fccfed0caadfa06cd937d505d84175aa /internal/transport | |
| parent | [performance] Bump default workers to CPUs * 2 (#608) (diff) | |
| download | gotosocial-1cdc163276f3437645c0b2c01602e53fa2292c46.tar.xz | |
[performance] Don't retry/backoff invalid http requests that will never succeed (#609)v0.3.4
* add httpguts (ew)
* add ValidateRequest err wrapping logic
* don't retry on unrecoverable errors
* i am very clever
Diffstat (limited to 'internal/transport')
| -rw-r--r-- | internal/transport/transport.go | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/internal/transport/transport.go b/internal/transport/transport.go index c52686c43..22dfbeb9a 100644 --- a/internal/transport/transport.go +++ b/internal/transport/transport.go @@ -35,6 +35,7 @@ import ( "github.com/sirupsen/logrus" "github.com/superseriousbusiness/activity/pub" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/internal/httpclient" ) // Transport wraps the pub.Transport interface with some additional functionality for fetching remote media. @@ -123,8 +124,14 @@ func (t *transport) do(r *http.Request, signer func(*http.Request) error, retryO // Generate error from status code for logging err = errors.New(`http response "` + rsp.Status + `"`) - } else if errorsv2.Is(err, context.DeadlineExceeded, context.Canceled) { - // Return early if context has cancelled + } else if errorsv2.Is(err, + context.DeadlineExceeded, + context.Canceled, + httpclient.ErrInvalidRequest, + httpclient.ErrBodyTooLarge, + httpclient.ErrReservedAddr, + ) { + // Return on non-retryable errors return nil, err } else if strings.Contains(err.Error(), "stopped after 10 redirects") { // Don't bother if net/http returned after too many redirects |
