gotosocial/internal/db/bundb
kim 6a6a499333
[performance] rewrite timelines to rely on new timeline cache type (#3941)
* start work rewriting timeline cache type

* further work rewriting timeline caching

* more work integration new timeline code

* remove old code

* add local timeline, fix up merge conflicts

* remove old use of go-bytes

* implement new timeline code into more areas of codebase, pull in latest go-mangler, go-mutexes, go-structr

* remove old timeline package, add local timeline cache

* remove references to old timeline types that needed starting up in tests

* start adding page validation

* fix test-identified timeline cache package issues

* fix up more tests, fix missing required changes, etc

* add exclusion for test.out in gitignore

* clarify some things better in code comments

* tweak cache size limits

* fix list timeline cache fetching

* further list timeline fixes

* linter, ssssssssshhhhhhhhhhhh please

* fix linter hints

* reslice the output if it's beyond length of 'lim'

* remove old timeline initialization code, bump go-structr to v0.9.4

* continued from previous commit

* improved code comments

* don't allow multiple entries for BoostOfID values to prevent repeated boosts of same boosts

* finish writing more code comments

* some variable renaming, for ease of following

* change the way we update lo,hi paging values during timeline load

* improved code comments for updated / returned lo , hi paging values

* finish writing code comments for the StatusTimeline{} type itself

* fill in more code comments

* update go-structr version to latest with changed timeline unique indexing logic

* have a local and public timeline *per user*

* rewrite calls to public / local timeline calls

* remove the zero length check, as lo, hi values might still be set

* simplify timeline cache loading, fix lo/hi returns, fix timeline invalidation side-effects missing for some federated actions

* swap the lo, hi values 🤦

* add (now) missing slice reverse of tag timeline statuses when paging ASC

* remove local / public caches (is out of scope for this work), share more timeline code

* remove unnecessary change

* again, remove more unused code

* remove unused function to appease the linter

* move boost checking to prepare function

* fix use of timeline.lastOrder, fix incorrect range functions used

* remove comments for repeat code

* remove the boost logic from prepare function

* do a maximum of 5 loads, not 10

* add repeat boost filtering logic, update go-structr, general improvements

* more code comments

* add important note

* fix timeline tests now that timelines are returned in page order

* remove unused field

* add StatusTimeline{} tests

* add more status timeline tests

* start adding preloading support

* ensure repeat boosts are marked in preloaded entries

* share a bunch of the database load code in timeline cache, don't clear timelines on relationship change

* add logic to allow dynamic clear / preloading of timelines

* comment-out unused functions, but leave in place as we might end-up using them

* fix timeline preload state check

* much improved status timeline code comments

* more code comments, don't bother inserting statuses if timeline not preloaded

* shift around some logic to make sure things aren't accidentally left set

* finish writing code comments

* remove trim-after-insert behaviour

* fix-up some comments referring to old logic

* remove unsetting of lo, hi

* fix preload repeatBoost checking logic

* don't return on status filter errors, these are usually transient

* better concurrency safety in Clear() and Done()

* fix test broken due to addition of preloader

* fix repeatBoost logic that doesn't account for already-hidden repeatBoosts

* ensure edit submodels are dropped on cache insertion

* update code-comment to expand CAS accronym

* use a plus1hULID() instead of 24h

* remove unused functions

* add note that public / local timeline requester can be nil

* fix incorrect visibility filtering of tag timeline statuses

* ensure we filter home timeline statuses on local only

* some small re-orderings to confirm query params in correct places

* fix the local only home timeline filter func
2025-04-26 09:56:15 +00:00
..
migrations [feature] add TOTP two-factor authentication (2FA) (#3960) 2025-04-07 16:14:41 +02:00
account.go [chore] Migrate accounts to new table, relax uniqueness constraint of actor url and collections (#3928) 2025-04-06 14:39:40 +02:00
account_test.go [chore] Migrate accounts to new table, relax uniqueness constraint of actor url and collections (#3928) 2025-04-06 14:39:40 +02:00
admin.go [chore] Migrate accounts to new table, relax uniqueness constraint of actor url and collections (#3928) 2025-04-06 14:39:40 +02:00
admin_test.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
advancedmigration.go [feature] Conversations API (#3013) 2024-07-23 20:44:31 +01:00
application.go [bugfix] new token API issues (#4022) 2025-04-18 17:37:50 +02:00
application_test.go [feature] Application creation + management via API + settings panel (#3906) 2025-03-17 14:06:17 +00:00
basic.go [feature] Add healthcheck endpoints /livez and /readyz (#2783) 2024-03-25 17:05:14 +00:00
basic_test.go [chore] Migrate accounts to new table, relax uniqueness constraint of actor url and collections (#3928) 2025-04-06 14:39:40 +02:00
bundb.go [chore] update otel libraries (#3740) 2025-02-06 12:14:37 +01:00
bundb_test.go [performance] rewrite timelines to rely on new timeline cache type (#3941) 2025-04-26 09:56:15 +00:00
bundbnew_test.go [chore] Improve copyright header handling (#1608) 2023-03-12 16:00:57 +01:00
conversation.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
conversation_test.go [feature] Conversations API (#3013) 2024-07-23 20:44:31 +01:00
domain.go [feature] Allow editing domain blocks/allows, fix comment import (#3967) 2025-04-04 18:29:22 +02:00
domain_test.go [feature] Allow editing domain blocks/allows, fix comment import (#3967) 2025-04-04 18:29:22 +02:00
domainpermissiondraft.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
domainpermissiondraft_test.go [feature] Add domain permission drafts and excludes (#3547) 2024-11-21 13:09:58 +00:00
domainpermissionexclude.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
domainpermissionexclude_test.go [feature] Add domain permission drafts and excludes (#3547) 2024-11-21 13:09:58 +00:00
domainpermissionsubscription.go [feature] Create/update/remove domain permission subscriptions (#3623) 2025-01-05 13:20:33 +01:00
domainpermissionsubscription_test.go [feature] Allow editing domain blocks/allows, fix comment import (#3967) 2025-04-04 18:29:22 +02:00
drivers.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
emoji.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
emoji_test.go [bugfix] Fix Postgres emoji delete, emoji category change (#2570) 2024-01-29 14:57:22 +00:00
errors_test.go [bugfix] Postgres error wrapping fix (#2276) 2023-10-18 12:17:26 +02:00
filter.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filter_test.go [bugfix] Fix filter title unique constraint (#3458) 2024-10-19 11:04:07 +02:00
filterkeyword.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filterkeyword_test.go [feature] Filters v1 (#2594) 2024-03-06 11:15:58 +01:00
filterstatus.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filterstatus_test.go [feature] Filters v1 (#2594) 2024-03-06 11:15:58 +01:00
headerfilter.go [feature/performance] sqlite pragma optimize on close (#2596) 2024-02-07 14:43:27 +00:00
headerfilter_test.go [feature] request blocking by http headers (#2409) 2023-12-18 14:18:25 +00:00
hook.go [chore] ensure consistent caller name fetching regardless of compiler inlining (#3323) 2024-09-20 13:30:33 +00:00
instance.go [performance] Optimize local timeline + local status count queries (#3892) 2025-03-10 13:52:19 +01:00
instance_test.go [feature] Allow user to choose "gallery" style layout for web view of profile (#3917) 2025-03-26 15:59:39 +00:00
interaction.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
interaction_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
list.go [performance] rewrite timelines to rely on new timeline cache type (#3941) 2025-04-26 09:56:15 +00:00
list_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
marker.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
markers_test.go [feature] Implement markers API (#1989) 2023-07-29 12:49:14 +02:00
media.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
media_test.go [feature] Media attachment placeholders (#2331) 2023-11-10 19:29:26 +01:00
mention.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
mention_test.go [chore] Improve copyright header handling (#1608) 2023-03-12 16:00:57 +01:00
move.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
move_test.go [feature/chore] Add Move database functions + cache (#2647) 2024-03-06 11:18:57 +01:00
notification.go [bugfix] notification types missing from link header (#3571) 2024-11-25 15:33:21 +00:00
notification_test.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
poll.go [bugfix] update fedi api to support multiple separate votes in same multiple choice poll (#3809) 2025-02-20 11:13:07 +01:00
poll_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
relationship.go [feature] Allow users to export data via the settings panel (#3140) 2024-07-31 15:03:34 +01:00
relationship_block.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_follow.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_follow_req.go [performance] convert enum strings to ints (#3558) 2024-11-25 14:48:59 +01:00
relationship_mute.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_note.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
relationship_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
report.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
report_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
rule.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
rule_test.go [feature] Instance rules (#2125) 2023-08-19 14:33:15 +02:00
search.go [feature] Add from: search operator and account_id query param (#2943) 2024-05-31 12:57:42 +02:00
search_test.go [feature] Add from: search operator and account_id query param (#2943) 2024-05-31 12:57:42 +02:00
session.go [feature/performance] sqlite pragma optimize on close (#2596) 2024-02-07 14:43:27 +00:00
session_test.go [chore] Improve copyright header handling (#1608) 2023-03-12 16:00:57 +01:00
sinbinstatus.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
status.go [feature] Application creation + management via API + settings panel (#3906) 2025-03-17 14:06:17 +00:00
status_test.go [feature/frontend] Add player for audio files; use thumbnail for poster (#3099) 2024-07-15 10:47:57 +01:00
statusbookmark.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
statusbookmark_test.go [feature] do not uncache status / emoji media if attached status is bookmarked (#2956) 2024-06-06 11:44:43 +01:00
statusedit.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
statusedit_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
statusfave.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
statusfave_test.go [chore/docs] Replace specific year range of copyright notice (#2520) 2024-01-13 16:33:53 +01:00
tag.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
tag_test.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
thread.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
thread_test.go [feature] Status thread mute/unmute functionality (#2278) 2023-10-25 15:04:53 +01:00
timeline.go [performance] rewrite timelines to rely on new timeline cache type (#3941) 2025-04-26 09:56:15 +00:00
timeline_test.go [performance] rewrite timelines to rely on new timeline cache type (#3941) 2025-04-26 09:56:15 +00:00
tombstone.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
upsert.go [feature/performance] Store account stats in separate table (#2831) 2024-04-16 13:10:13 +02:00
user.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
user_test.go [feature] Add list command to admin account (#1648) 2023-03-27 16:02:26 +02:00
util.go [bugfix] Account timeline: exclude self-replies that mention other accounts (#2670) 2024-02-27 18:18:40 +01:00
webpush.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
webpush_test.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
workertask.go [feature] persist worker queues to db (#3042) 2024-07-30 13:58:31 +02:00