Page MenuHomePhabricator

D21164.diff
No OneTemporary

D21164.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -715,6 +715,7 @@
'DifferentialUnitTestResult' => 'applications/differential/constants/DifferentialUnitTestResult.php',
'DifferentialUpdateRevisionConduitAPIMethod' => 'applications/differential/conduit/DifferentialUpdateRevisionConduitAPIMethod.php',
'DifferentialViewState' => 'applications/differential/storage/DifferentialViewState.php',
+ 'DifferentialViewStateGarbageCollector' => 'applications/differential/garbagecollector/DifferentialViewStateGarbageCollector.php',
'DifferentialViewStateQuery' => 'applications/differential/query/DifferentialViewStateQuery.php',
'DiffusionAuditorDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorDatasource.php',
'DiffusionAuditorFunctionDatasource' => 'applications/diffusion/typeahead/DiffusionAuditorFunctionDatasource.php',
@@ -6803,6 +6804,7 @@
'DifferentialDAO',
'PhabricatorPolicyInterface',
),
+ 'DifferentialViewStateGarbageCollector' => 'PhabricatorGarbageCollector',
'DifferentialViewStateQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'DiffusionAuditorDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
'DiffusionAuditorFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
diff --git a/src/applications/differential/garbagecollector/DifferentialViewStateGarbageCollector.php b/src/applications/differential/garbagecollector/DifferentialViewStateGarbageCollector.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/garbagecollector/DifferentialViewStateGarbageCollector.php
@@ -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);
+ }
+
+}
diff --git a/src/applications/differential/storage/DifferentialViewState.php b/src/applications/differential/storage/DifferentialViewState.php
--- a/src/applications/differential/storage/DifferentialViewState.php
+++ b/src/applications/differential/storage/DifferentialViewState.php
@@ -23,6 +23,9 @@
'key_object' => array(
'columns' => array('objectPHID'),
),
+ 'key_modified' => array(
+ 'columns' => array('dateModified'),
+ ),
),
) + parent::getConfiguration();
}

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 11, 7:38 AM (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7229416
Default Alt Text
D21164.diff (2 KB)

Event Timeline