Lain Soykaf
5e425ce9f5
fix(retention): see local reactions of the legacy EmojiReaction type
...
Older data stores emoji reactions as EmojiReaction. The per-thread check
only looked at EmojiReact, so a thread whose only local interaction was
such a reaction was evicted.
2026-09-23 15:43:02 +04:00
Lain Soykaf
5d1e331589
fix(retention): only delete objects that belong to an evicted thread
...
Eviction took the object ids of every activity in a thread. A Like or
Announce whose context differs from its object's then deleted a post in
another, possibly pinned thread. Found on a copy of a real instance:
593 posts from threads with local activity in the first 2M objects.
2026-09-23 13:45:02 +04:00
Lain Soykaf
5a4ada881f
test(retention): cover the recipients pin in prune_objects and watermark activity
2026-09-23 08:26:24 +04:00
Lain Soykaf
75b158c1d0
perf(retention): only clean up hashtags of evicted objects
...
Each run scanned the whole hashtags table. Collect the hashtag ids of
the objects about to be deleted and check just those.
2026-09-23 08:24:09 +04:00
Lain Soykaf
3cbcae2de3
fix(retention): keep threads younger than a day over the watermark
...
Over the watermark the walk went up to the present, so posts that had
just arrived could be evicted while people were reading them.
2026-09-23 08:23:05 +04:00
Lain Soykaf
1a0212bf9a
fix(retention): pin threads addressed to a local user
...
A mention or DM was only pinned by its notification, so clearing
notifications let retention evict a user's direct messages. Check the
activity recipients instead, which does not go away.
2026-09-23 08:22:14 +04:00
Lain Soykaf
6c8ed0a3b8
feat(retention): walk activities incrementally with a persisted cursor
...
Grouping the whole activities table by thread every run is unusable on
a large instance: on a 312 GB database it plans as a seq scan plus a
50M-row on-disk sort. Instead, walk activities in id order (flake ids
are time-ordered) from a persisted cursor up to the id that corresponds
to the deadline, and verify only the threads those activities belong to
through the (type, context) index. Measured on that instance: 147 ms
for a 50k-activity range scan, 349 ms warm / 14 s cold to verify ~700
threads.
The cursor is persisted per chunk so a killed run resumes. The
watermark walk keeps a cursor of its own so it cannot leave the
age-based walk stranded behind the deadline. Adds the retention_cursors
table.
2026-09-02 12:32:09 +04:00
Lain Soykaf
fa4fb00910
refactor(database): reuse retention query in prune_objects
...
prune_objects --keep-threads now shares the thread selection with
Pleroma.Retention, which additionally keeps threads that mention a
local user or that are referenced by a report. The hashtag cleanup
is shared as well.
2026-09-02 11:53:42 +04:00
Lain Soykaf
cd796f007d
feat(retention): run eviction from an Oban cron worker
...
Adds config :pleroma, :retention (disabled by default) and an hourly
crontab entry that evicts one bounded batch per run.
2026-09-02 11:53:42 +04:00
Lain Soykaf
1ebcd4f79d
feat(retention): add bounded eviction of old remote threads
...
Pleroma.Retention treats remote content as a cache: a thread is evicted
once nobody local has interacted with it and it has been quiet for
longer than remote_post_retention_days, or when the objects table is
over an optional row watermark. Local posts are never deleted.
A single grouping scan collects activity and object ids per thread so
the deletes only touch primary key and ap_id indexes.
2026-09-02 11:53:41 +04:00
Lain Soykaf
478b021fbe
fix(migrations): make Rebased rollback safe
2026-07-29 15:22:13 +04:00
lain
1dd6a345bf
Merge pull request 'Respect activity restrictions in account statuses' ( #7943 ) from mkljczk/pleroma:issue-2604-restrict-account-statuses into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7943
2026-07-29 06:44:26 +00:00
Lain Soykaf
4a47a756be
fix(mastodon-api): optimize account status restrictions
2026-07-28 16:01:48 +04:00
lain
a45eb365ed
Merge pull request 'Abort incomplete media proxy responses' ( #7946 ) from lambadalambda/pleroma:fix/media-proxy-truncated-cache into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7946
2026-07-27 15:08:06 +00:00
Lain Soykaf
bc999b3309
fix(media-proxy): abort truncated streams
2026-07-27 16:32:44 +04:00
Lain Soykaf
030c7e929c
style(oauth): use single alias directives
2026-07-27 12:14:58 +04:00
Lain Soykaf
d30d205f0b
fix(oauth): preserve dependent app cleanup
2026-07-27 11:57:16 +04:00
Lain Soykaf
b4c624911c
Merge branch 'develop' into gitlab-mr-iid-4315
2026-07-27 11:34:31 +04:00
lain
8ab0e046b1
Merge pull request 'Allow creating accounts without a password in the AdminAPI, update docs' ( #7937 ) from mkljczk/pleroma:admin-api-passwordless-user-creation into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7937
2026-07-27 07:17:14 +00:00
Lain Soykaf
2b32e3cf1f
fix(mastodon-api): restrict unauthenticated account statuses
2026-07-26 18:12:49 +04:00
Lain Soykaf
03e75d3b3e
fix(webhooks): merge develop and harden delivery
2026-07-26 17:00:14 +04:00
lain
b9ef1e2182
Merge pull request 'Restore preview cards tests and update their OpenAPI description' ( #7444 ) from gitlab-mr-iid-4067 into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7444
2026-07-26 10:32:26 +00:00
lain
e210e16a37
Merge pull request 'MastoAPI: /api/{v1,v2}/admin/accounts, /api/v1/admin/reports' ( #7842 ) from mkljczk/pleroma:mastodon-admin-api into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7842
2026-07-26 10:06:01 +00:00
Lain Soykaf
842e6bcaff
Merge remote-tracking branch 'origin/develop' into pr-7444-finish
2026-07-26 13:56:09 +04:00
Lain Soykaf
c591ca518c
fix(mastodon-api): finish preview card compatibility
2026-07-26 13:55:57 +04:00
Lain Soykaf
55c20c0fe8
test(mastodon-api): avoid relationship expiry races
2026-07-26 13:54:28 +04:00
Lain Soykaf
458a15bf9f
fix(mastodon-api): harden admin moderation actions
2026-07-26 13:24:03 +04:00
Lain Soykaf
7a741736ea
Merge remote-tracking branch 'origin/develop' into pr-7444-finish
2026-07-26 13:20:50 +04:00
lain
3c916891f6
Merge branch 'develop' into paradedb-search-backend
2026-07-26 09:15:42 +00:00
lain
a5aad47cff
Merge branch 'develop' into mastodon-admin-api
2026-07-26 08:52:01 +00:00
lain
d115b41848
Merge pull request 'Reject unsupported HTTP Message Signatures' ( #7918 ) from activitypub-bot-federation into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7918
2026-07-26 08:50:16 +00:00
Lain Soykaf
6e73d043ef
test(config): exclude static fixture from test loader
2026-07-26 12:40:38 +04:00
lain
f5dd75b1a3
Merge branch 'develop' into activitypub-bot-federation
2026-07-26 08:36:46 +00:00
Lain Soykaf
ce5c1b4c15
fix(activitypub): harden object normalization
2026-07-26 12:35:09 +04:00
Lain Soykaf
9df50eea82
fix: reject duplicate Signature headers
2026-07-26 12:26:35 +04:00
Lain Soykaf
f90a52398b
ci(search): gate pinned ParadeDB integration
2026-07-26 12:16:04 +04:00
Lain Soykaf
13c944a04b
fix(search): index remote attachment descriptions
2026-07-26 12:03:24 +04:00
Lain Soykaf
271c3a3dd8
fix(config): keep search startup settings static
2026-07-26 11:58:31 +04:00
Lain Soykaf
acc44a5b6f
Merge remote-tracking branch 'origin/develop' into pr-7805-finish
2026-07-26 11:55:01 +04:00
lain
51349f61f8
Merge branch 'develop' into mastodon-admin-api
2026-07-26 07:46:55 +00:00
Lain Soykaf
91089c93ad
feat(search): add resumable runtime backfill
2026-07-26 11:38:24 +04:00
Lain Soykaf
a9862dcaa0
chore: merge develop into ParadeDB backend
2026-07-26 11:24:37 +04:00
Lain Soykaf
99befcaf1b
fix(activitypub): deduplicate account favourites
2026-07-25 10:51:09 +04:00
Lain Soykaf
9a6c2f909d
Merge remote-tracking branch 'origin/develop' into issue-3379-favourites-order
2026-07-25 10:31:57 +04:00
lain
cc1b95c88e
Merge pull request 'Rework Gun connection pooling' ( #7934 ) from issue-2263-gun-validation into develop
...
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7934
2026-07-25 05:44:39 +00:00
Lain Soykaf
d5f48101b8
fix(media-proxy): safely detect extensionless images
2026-07-25 00:06:03 +04:00
Lain Soykaf
bb4826d8ae
fix(admin-api): structure reset token failures
2026-07-24 23:24:52 +04:00
Lain Soykaf
465a81ecf2
Merge remote-tracking branch 'origin/develop' into review-pr-7933
2026-07-24 23:24:11 +04:00
Lain Soykaf
d0b5a05075
fix(admin-api): confirm created users
2026-07-24 23:14:03 +04:00
Lain Soykaf
836f4a2d69
fix(admin-api): reject explicit empty passwords
2026-07-24 22:52:23 +04:00