1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-01-21 20:22:12 +01:00
phorge-phorge/src/applications/metamta/garbagecollector/MetaMTAMailReceivedGarbageCollector.php
epriestley 9c798e5cca 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
2015-10-02 09:17:24 -07:00

29 lines
665 B
PHP

<?php
final class MetaMTAMailReceivedGarbageCollector
extends PhabricatorGarbageCollector {
const COLLECTORCONST = 'metamta.received';
public function getCollectorName() {
return pht('Mail (Received)');
}
public function getDefaultRetentionPolicy() {
return phutil_units('90 days in seconds');
}
protected function collectGarbage() {
$table = new PhabricatorMetaMTAReceivedMail();
$conn_w = $table->establishConnection('w');
queryfx(
$conn_w,
'DELETE FROM %T WHERE dateCreated < %d LIMIT 100',
$table->getTableName(),
$this->getGarbageEpoch());
return ($conn_w->getAffectedRows() == 100);
}
}