From cc86a08f1509dc48cd1f1ac8cd48866914cdbe0d Mon Sep 17 00:00:00 2001 From: kim Date: Tue, 8 Apr 2025 16:52:53 +0100 Subject: [PATCH] fix timeline preload state check --- internal/cache/timeline/status.go | 12 +++++++--- internal/processing/timeline/home.go | 32 --------------------------- internal/processing/timeline/list.go | 33 ---------------------------- 3 files changed, 9 insertions(+), 68 deletions(-) diff --git a/internal/cache/timeline/status.go b/internal/cache/timeline/status.go index 0cf7e6deb..25889369d 100644 --- a/internal/cache/timeline/status.go +++ b/internal/cache/timeline/status.go @@ -74,6 +74,8 @@ type StatusMeta struct { // as-needed, caching prepared frontend representations where // possible. This is largely wrapping code for our own codebase // to be able to smoothly interact with structr.Timeline{}. + +// ... type StatusTimeline struct { // underlying timeline cache of *StatusMeta{}, @@ -302,7 +304,7 @@ func (t *StatusTimeline) Preload( // Check if seen recently. last := recentBoosts[id] - value.repeatBoost = last < 40 + value.repeatBoost = (last < 40) // Update last-seen idx. recentBoosts[id] = idx @@ -311,8 +313,12 @@ func (t *StatusTimeline) Preload( // Mark timeline as preloaded. old := t.preload.Swap(new(any)) - if old != nil && *old != false { - log.Errorf(ctx, "BUG: invalid timeline preload state: %#v", *old) + if old != nil { + switch t := (*old).(type) { + case *sync.WaitGroup: + default: + log.Errorf(ctx, "BUG: invalid timeline preload state: %#v", t) + } } return n, nil diff --git a/internal/processing/timeline/home.go b/internal/processing/timeline/home.go index 28d877331..eefb45a2a 100644 --- a/internal/processing/timeline/home.go +++ b/internal/processing/timeline/home.go @@ -90,35 +90,3 @@ func (p *Processor) HomeTimelineGet( }, ) } - -// preloadHomeTimeline will ensure that the timeline -// cache for home owned by given account is preloaded. -// func (p *Processor) preloadHomeTimeline( -// ctx context.Context, -// account *gtsmodel.Account, -// ) error { - -// // Get (and so, create) home timeline cache for account ID. -// timeline := p.state.Caches.Timelines.Home.MustGet(account.ID) - -// // Preload timeline with funcs. -// n, err := timeline.Preload(ctx, - -// // Database load function. -// func(page *paging.Page) ([]*gtsmodel.Status, error) { -// return p.state.DB.GetHomeTimeline(ctx, account.ID, page) -// }, - -// // Status filtering function. -// func(status *gtsmodel.Status) (bool, error) { -// ok, err := p.visFilter.StatusHomeTimelineable(ctx, account, status) -// return !ok, err -// }, -// ) -// if err != nil { -// return gtserror.Newf("error preloading home timeline %s: %w", account.ID, err) -// } - -// log.Infof(ctx, "%s: preloaded %d", account.Username, n) -// return nil -// } diff --git a/internal/processing/timeline/list.go b/internal/processing/timeline/list.go index a021219de..04166226f 100644 --- a/internal/processing/timeline/list.go +++ b/internal/processing/timeline/list.go @@ -103,36 +103,3 @@ func (p *Processor) ListTimelineGet( }, ) } - -// preloadListTimeline will ensure that the timeline -// cache for list owned by given account is preloaded. -// func (p *Processor) preloadListTimeline( -// ctx context.Context, -// account *gtsmodel.Account, -// list *gtsmodel.List, -// ) error { - -// // Get (and so, create) list timeline cache for list ID. -// timeline := p.state.Caches.Timelines.List.MustGet(list.ID) - -// // Preload timeline with funcs. -// n, err := timeline.Preload(ctx, - -// // Database load function. -// func(page *paging.Page) ([]*gtsmodel.Status, error) { -// return p.state.DB.GetListTimeline(ctx, list.ID, page) -// }, - -// // Status filtering function. -// func(status *gtsmodel.Status) (bool, error) { -// ok, err := p.visFilter.StatusHomeTimelineable(ctx, account, status) -// return !ok, err -// }, -// ) -// if err != nil { -// return gtserror.Newf("error preloading list timeline %s: %w", list.ID, err) -// } - -// log.Infof(ctx, "%s[%q]: preloaded %d", account.Username, list.Title, n) -// return nil -// }