Provide bin/garbage for interacting with garbage collection

Summary:
Fixes T9494. This:

  - Removes all the random GC.x.y.z config.
  - Puts it all in one place that's locked and which you use `bin/garbage set-policy ...` to adjust.
  - Makes every TTL-based GC configurable.
  - Simplifies the code in the actual GCs.

Test Plan:
  - Ran `bin/garbage collect` to collect some garbage, until it stopped collecting.
  - Ran `bin/garbage set-policy ...` to shorten policy. Saw change in web UI. Ran `bin/garbage collect` again and saw it collect more garbage.
  - Set policy to indefinite and saw it not collect garabge.
  - Set policy to default and saw it reflected in web UI / `collect`.
  - Ran `bin/phd debug trigger` and saw all GCs fire with reasonable looking queries.
  - Read new docs.

{F857928}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9494

Differential Revision: https://secure.phabricator.com/D14219
This commit is contained in:
epriestley
2015-10-02 09:17:24 -07:00
parent bb4667cb84
commit 9c798e5cca
36 changed files with 486 additions and 188 deletions

View File

@@ -13,10 +13,10 @@ final class PhabricatorFileTemporaryGarbageCollector
return true;
}
public function collectGarbage() {
protected function collectGarbage() {
$files = id(new PhabricatorFile())->loadAllWhere(
'ttl < %d LIMIT 100',
time());
PhabricatorTime::getNow());
foreach ($files as $file) {
$file->delete();