Homestyx hydra
Diffusion hydra 2b7c0ec92f6c

Destroy file attachments when file is deleted, or object is deleted

Description

Destroy file attachments when file is deleted, or object is deleted

Summary:
Adds file attachment deletion logics:

  • PhabricatorFile: delete the attachment if file is deleted
  • destruction engine extension: delete attachment if object is deleted
  • SQL patch: delete existing leftover attachments from deleted files

To apply the cleanup, as usual, run:

./bin/storage upgrade

This cleanup may take some time, proportionally to the size of these tables:

phabricator_file.file
phabricator_file.file_attachment

Just as an indication: the storage upgrade, in a Phorge with file count 1.3M rows and file_attachment consisting in 9K rows, it may delete 170K rows in less than 1 second on average hardware.

Closes T15110

Test Plan:
Apply the patch, run ./bin/storage/upgrade:

  • no "Unknown Object" in any "Referenced Files" curtain of any object.

Have phd daemon running.

Upload file, attach the file to a task, delete the file from the web interface:

  • no "Unknown Object" in "Referenced Files" curtain of that task.
  • the query SELECT * FROM file_attachment WHERE filePHID = '<file phid>' returns empty result

Upload file, attach the file to a task, delete the task from the ./bin/remove destroy workflow:

  • the query SELECT * FROM file_attachment WHERE objectPHID = '<task phid>' returns empty result

Reviewers: O1 Blessed Committers, avivey, valerio.bozzolan

Reviewed By: O1 Blessed Committers, avivey, valerio.bozzolan

Subscribers: Ekubischta, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Tags: #files

Maniphest Tasks: T15110

Differential Revision: https://we.phorge.it/D25051

Details

Provenance
Dylan FAuthored on Aug 10 2024, 4:15 PM
Valerio BozzolanCommitted on Aug 10 2024, 4:16 PM
sirocylPushed on Oct 16 2024, 5:49 AM
Parents
R1:b74f1ad519e8: Fix 404 link in Diviner to "Configuring File Storage" article
Branches
Unknown
Tags
Unknown

Event Timeline