mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 14:52:41 +01:00
Add a very forgiving GC for Differential viewstate information
Summary: Ref T13455. Viewstates are fairly small and will probably grow less quickly than the changeset table, but the data is also not important to retain in the long term: if you revisit a change several months after hiding some files, it's fine if we've forgotten that you adjusted the view parameters. Add a GC with a long default collection policy (180 days) so installs can manage the size of this table if it becomes necessary. Test Plan: Ran via `bin/garbage` to adjust the GC policy and collect viewstates. Maniphest Tasks: T13455 Differential Revision: https://secure.phabricator.com/D21164
This commit is contained in:
parent
e20feeeee9
commit
d05d8f6558
3 changed files with 34 additions and 0 deletions
|
@ -715,6 +715,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialUnitTestResult' => 'applications/differential/constants/DifferentialUnitTestResult.php',
|
'DifferentialUnitTestResult' => 'applications/differential/constants/DifferentialUnitTestResult.php',
|
||||||
'DifferentialUpdateRevisionConduitAPIMethod' => 'applications/differential/conduit/DifferentialUpdateRevisionConduitAPIMethod.php',
|
'DifferentialUpdateRevisionConduitAPIMethod' => 'applications/differential/conduit/DifferentialUpdateRevisionConduitAPIMethod.php',
|
||||||
'DifferentialViewState' => 'applications/differential/storage/DifferentialViewState.php',
|
'DifferentialViewState' => 'applications/differential/storage/DifferentialViewState.php',
|
||||||
|
'DifferentialViewStateGarbageCollector' => 'applications/differential/garbagecollector/DifferentialViewStateGarbageCollector.php',
|
||||||
'DifferentialViewStateQuery' => 'applications/differential/query/DifferentialViewStateQuery.php',
|
'DifferentialViewStateQuery' => 'applications/differential/query/DifferentialViewStateQuery.php',
|
||||||
'DiffusionAuditorDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorDatasource.php',
|
'DiffusionAuditorDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorDatasource.php',
|
||||||
'DiffusionAuditorFunctionDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorFunctionDatasource.php',
|
'DiffusionAuditorFunctionDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorFunctionDatasource.php',
|
||||||
|
@ -6803,6 +6804,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialDAO',
|
'DifferentialDAO',
|
||||||
'PhabricatorPolicyInterface',
|
'PhabricatorPolicyInterface',
|
||||||
),
|
),
|
||||||
|
'DifferentialViewStateGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
'DifferentialViewStateQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'DifferentialViewStateQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'DiffusionAuditorDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
'DiffusionAuditorDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
||||||
'DiffusionAuditorFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
'DiffusionAuditorFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DifferentialViewStateGarbageCollector
|
||||||
|
extends PhabricatorGarbageCollector {
|
||||||
|
|
||||||
|
const COLLECTORCONST = 'differential.viewstate';
|
||||||
|
|
||||||
|
public function getCollectorName() {
|
||||||
|
return pht('Differential View States');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefaultRetentionPolicy() {
|
||||||
|
return phutil_units('180 days in seconds');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function collectGarbage() {
|
||||||
|
$table = new DifferentialViewState();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
|
|
||||||
|
queryfx(
|
||||||
|
$conn,
|
||||||
|
'DELETE FROM %R WHERE dateModified < %d LIMIT 100',
|
||||||
|
$table,
|
||||||
|
$this->getGarbageEpoch());
|
||||||
|
|
||||||
|
return ($conn->getAffectedRows() == 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -23,6 +23,9 @@ final class DifferentialViewState
|
||||||
'key_object' => array(
|
'key_object' => array(
|
||||||
'columns' => array('objectPHID'),
|
'columns' => array('objectPHID'),
|
||||||
),
|
),
|
||||||
|
'key_modified' => array(
|
||||||
|
'columns' => array('dateModified'),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
) + parent::getConfiguration();
|
) + parent::getConfiguration();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue