Commit Graph

6 Commits (388d6e57260fc40bf9ec7e40afb5fb0d1f61e58b)

Author SHA1 Message Date
Your Name 8a4567a5c2 Isolate fanout delivery failures from StatusDelete local cleanup 1 week ago
Your Name 60284a871e Purge status_edits on account and status deletion 1 week ago
Your Name 888fa1bc30 Fix tests 2 weeks ago
Your Name 255bdaa2a0 Use LazilyRefreshDatabase instead of plain RefreshDatabase in tests
Aligns with the app's dominant convention (84 files vs 10). Avoids
running migrations for tests that never touch the database.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2 weeks ago
Your Name 6e7419bb96 Fix StatusDelete crashing on soft-deleted owning profile 2 weeks ago
Your Name c4e5b96d25 Stream deletions with cursor and batch notification lookups in delete jobs
The status- and account-deletion jobs loaded whole collections with
->get() and then looped, running a per-row Notification lookup inside
each iteration.

- StatusDelete / RemoteStatusDelete: resolve associated DirectMessage and
  MediaTag ids, fetch their notifications in a single whereIn query,
  clear each via cursor (NotificationService::del must run per row for
  cache/redis cleanup), then bulk delete the DMs and media tags.
- DeleteAccountPipeline / DeleteRemoteProfilePipeline: stream Story and
  Collection deletions with cursor() instead of loading every row into
  memory. Per-row file unlink and item deletes are preserved.

Adds StatusDeleteCleanupTest covering DM + notification cleanup, media
tag + notification cleanup, and the no-associations case.
3 weeks ago