From 7d193de25fbccc00923d6d791d6d4e0d2d5d498e Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Wed, 1 Sep 2021 10:08:21 +0100 Subject: Improve GetRemoteStatus and db.GetStatus() logic (#174) * only fetch status parents / children if explicity requested when dereferencing Signed-off-by: kim (grufwub) * Remove recursive DB GetStatus logic, don't fetch parent unless requested Signed-off-by: kim (grufwub) * StatusCache copies status so there are no thread-safety issues with modified status objects Signed-off-by: kim (grufwub) * remove sqlite test files Signed-off-by: kim (grufwub) * fix bugs introduced by previous commit Signed-off-by: kim (grufwub) * fix not continue on error in loop Signed-off-by: kim (grufwub) * use our own RunInTx implementation (possible fix for nested tx error) Signed-off-by: kim (grufwub) * fix cast statement to work with SQLite Signed-off-by: kim (grufwub) * be less strict about valid status in cache Signed-off-by: kim (grufwub) * add cache=shared ALWAYS for SQLite db instances Signed-off-by: kim (grufwub) * Fix EnrichRemoteAccount when updating account fails Signed-off-by: kim (grufwub) * add nolint tag Signed-off-by: kim (grufwub) * ensure file: prefixes the filename in sqlite addr Signed-off-by: kim (grufwub) * add an account cache, add status author account from db Signed-off-by: kim (grufwub) * Fix incompatible SQLite query Signed-off-by: kim (grufwub) * *actually* use the new getAccount() function in accountsDB Signed-off-by: kim (grufwub) * update cache tests to use test suite Signed-off-by: kim (grufwub) * add RelationshipTestSuite, add tests for methods with changed SQL Signed-off-by: kim (grufwub) --- internal/federation/federator.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'internal/federation/federator.go') diff --git a/internal/federation/federator.go b/internal/federation/federator.go index 5eddcbb99..aecddf017 100644 --- a/internal/federation/federator.go +++ b/internal/federation/federator.go @@ -62,8 +62,8 @@ type Federator interface { GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, refresh bool) (*gtsmodel.Account, bool, error) EnrichRemoteAccount(ctx context.Context, username string, account *gtsmodel.Account) (*gtsmodel.Account, error) - GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh bool) (*gtsmodel.Status, ap.Statusable, bool, error) - EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status) (*gtsmodel.Status, error) + GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent, includeChilds bool) (*gtsmodel.Status, ap.Statusable, bool, error) + EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent, includeChilds bool) (*gtsmodel.Status, error) GetRemoteInstance(ctx context.Context, username string, remoteInstanceURI *url.URL) (*gtsmodel.Instance, error) @@ -88,7 +88,6 @@ type federator struct { // NewFederator returns a new federator func NewFederator(db db.DB, federatingDB federatingdb.DB, transportController transport.Controller, config *config.Config, log *logrus.Logger, typeConverter typeutils.TypeConverter, mediaHandler media.Handler) Federator { - dereferencer := dereferencing.NewDereferencer(config, db, typeConverter, transportController, mediaHandler, log) clock := &Clock{} -- cgit v1.2.3