diff options
author | 2022-11-23 22:40:07 +0100 | |
---|---|---|
committer | 2022-11-23 21:40:07 +0000 | |
commit | c9d893fec18fbb638eda1ee03776ae34c562f39b (patch) | |
tree | 19b4dda4e4cebfe29babb0fb4ed98910a0245c25 /internal/processing/search.go | |
parent | [docs] Clarify that reverse proxy setups need trusted-proxies (#1127) (diff) | |
download | gotosocial-c9d893fec18fbb638eda1ee03776ae34c562f39b.tar.xz |
[feature/performance] Fail fast when doing remote transport calls inside incoming request contexts (#1119)
* [feature/performance] Fail fast when doing remote transport calls inside incoming request contexts
* [chore] Reduce outgoing request timeout to 15s
* log error messages when fastfailing
* use context.Value() instead of wrapped context, wrap error with fastfail instead of extra log entry
* add fast-fail context key test
Signed-off-by: kim <grufwub@gmail.com>
Co-authored-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/processing/search.go')
-rw-r--r-- | internal/processing/search.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/internal/processing/search.go b/internal/processing/search.go index 8bb2224a5..bc2bc93d4 100644 --- a/internal/processing/search.go +++ b/internal/processing/search.go @@ -34,6 +34,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/log" "github.com/superseriousbusiness/gotosocial/internal/oauth" + "github.com/superseriousbusiness/gotosocial/internal/transport" "github.com/superseriousbusiness/gotosocial/internal/util" ) @@ -161,13 +162,13 @@ func (p *processor) searchStatusByURI(ctx context.Context, authed *oauth.Auth, u if resolve { // This is a non-local status and we're allowed to resolve, so dereference it - status, statusable, err := p.federator.GetRemoteStatus(ctx, authed.Account.Username, uri, true, true) + status, statusable, err := p.federator.GetRemoteStatus(transport.WithFastfail(ctx), authed.Account.Username, uri, true, true) if err != nil { return nil, fmt.Errorf("searchStatusByURI: error fetching remote status %q: %v", uriStr, err) } // Attempt to dereference the status thread while we are here - p.federator.DereferenceRemoteThread(ctx, authed.Account.Username, uri, status, statusable) + p.federator.DereferenceRemoteThread(transport.WithFastfail(ctx), authed.Account.Username, uri, status, statusable) } return nil, nil @@ -190,7 +191,7 @@ func (p *processor) searchAccountByURI(ctx context.Context, authed *oauth.Auth, } // we don't have it yet, try to find it remotely - return p.federator.GetRemoteAccount(ctx, dereferencing.GetRemoteAccountParams{ + return p.federator.GetRemoteAccount(transport.WithFastfail(ctx), dereferencing.GetRemoteAccountParams{ RequestingUsername: authed.Account.Username, RemoteAccountID: uri, Blocking: true, @@ -209,7 +210,7 @@ func (p *processor) searchAccountByMention(ctx context.Context, authed *oauth.Au } // we don't have it yet, try to find it remotely - return p.federator.GetRemoteAccount(ctx, dereferencing.GetRemoteAccountParams{ + return p.federator.GetRemoteAccount(transport.WithFastfail(ctx), dereferencing.GetRemoteAccountParams{ RequestingUsername: authed.Account.Username, RemoteAccountUsername: username, RemoteAccountHost: domain, |