HomePhorge

Allow Phabricator storage engines to be extended and configured

Description

Allow Phabricator storage engines to be extended and configured

Summary:
See T344. Currently, there's a hard-coded 12MB filesize limit and some awkward
interactions with MySQL's max_allowed_packet. Make this system generally more
robust:

  • Move the upload limit to configuration.
  • Add setup steps which reconcile max_allowed_packet vs MySQL file storage

limits.

  • Add a layer of indirection between uploading files and storage engines.
  • Allow the definition of new storage engines.
  • Define a local disk storage engine.
  • Add a "storage engine selector" class which manages choosing which storage

engines to put files in.

  • Document storage engines.
  • Document file storage classes.

Test Plan:
Setup mode:

  • Disabled MySQL storage engine, misconfigured it, configured it correctly.
  • Disabled file storage engine, set it to something invalid, set it to

something valid.

  • Verified max_allowed_packet is read correctly.

Application mode:

  • Configured local file storage.
  • Uploaded large and small files.
  • Verified larger files were written to local storage.
  • Verified smaller files were written to MySQL blob storage.

Documentation:

  • Read documentation.

Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran
CC: aran, epriestley, jungejason
Differential Revision: 695

Details

Provenance
epriestleyAuthored on Jul 19 2011, 10:48 PM
themackabuPushed on Mar 25 2025, 8:07 PM
Parents
rP7b40c616d6cd: Refactor user settings
Branches
Unknown
Tags
Unknown

Event Timeline