Page MenuHomePhabricator

D7971.id.diff
No OneTemporary

D7971.id.diff

Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -259,7 +259,9 @@
'ConduitAPI_user_whoami_Method' => 'applications/people/conduit/ConduitAPI_user_whoami_Method.php',
'ConduitCall' => 'applications/conduit/call/ConduitCall.php',
'ConduitCallTestCase' => 'applications/conduit/call/__tests__/ConduitCallTestCase.php',
+ 'ConduitConnectionGarbageCollector' => 'applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php',
'ConduitException' => 'applications/conduit/protocol/ConduitException.php',
+ 'ConduitLogGarbageCollector' => 'applications/conduit/garbagecollector/ConduitLogGarbageCollector.php',
'ConduitSSHWorkflow' => 'applications/conduit/ssh/ConduitSSHWorkflow.php',
'ConpherenceActionMenuEventListener' => 'applications/conpherence/events/ConpherenceActionMenuEventListener.php',
'ConpherenceConfigOptions' => 'applications/conpherence/config/ConpherenceConfigOptions.php',
@@ -413,6 +415,7 @@
'DifferentialNewDiffMail' => 'applications/differential/mail/DifferentialNewDiffMail.php',
'DifferentialPHIDTypeDiff' => 'applications/differential/phid/DifferentialPHIDTypeDiff.php',
'DifferentialPHIDTypeRevision' => 'applications/differential/phid/DifferentialPHIDTypeRevision.php',
+ 'DifferentialParseCacheGarbageCollector' => 'applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php',
'DifferentialParseRenderTestCase' => 'applications/differential/__tests__/DifferentialParseRenderTestCase.php',
'DifferentialPathFieldSpecification' => 'applications/differential/field/specification/DifferentialPathFieldSpecification.php',
'DifferentialPrimaryPaneView' => 'applications/differential/view/DifferentialPrimaryPaneView.php',
@@ -1236,8 +1239,11 @@
'PhabricatorBuiltinPatchList' => 'infrastructure/storage/patch/PhabricatorBuiltinPatchList.php',
'PhabricatorBusyExample' => 'applications/uiexample/examples/PhabricatorBusyExample.php',
'PhabricatorCacheDAO' => 'applications/cache/storage/PhabricatorCacheDAO.php',
+ 'PhabricatorCacheGeneralGarbageCollector' => 'applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php',
'PhabricatorCacheManagementPurgeWorkflow' => 'applications/cache/management/PhabricatorCacheManagementPurgeWorkflow.php',
'PhabricatorCacheManagementWorkflow' => 'applications/cache/management/PhabricatorCacheManagementWorkflow.php',
+ 'PhabricatorCacheMarkupGarbageCollector' => 'applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php',
+ 'PhabricatorCacheTTLGarbageCollector' => 'applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php',
'PhabricatorCaches' => 'applications/cache/PhabricatorCaches.php',
'PhabricatorCalendarBrowseController' => 'applications/calendar/controller/PhabricatorCalendarBrowseController.php',
'PhabricatorCalendarController' => 'applications/calendar/controller/PhabricatorCalendarController.php',
@@ -1350,6 +1356,7 @@
'PhabricatorDaemonLogEvent' => 'applications/daemon/storage/PhabricatorDaemonLogEvent.php',
'PhabricatorDaemonLogEventViewController' => 'applications/daemon/controller/PhabricatorDaemonLogEventViewController.php',
'PhabricatorDaemonLogEventsView' => 'applications/daemon/view/PhabricatorDaemonLogEventsView.php',
+ 'PhabricatorDaemonLogGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php',
'PhabricatorDaemonLogListController' => 'applications/daemon/controller/PhabricatorDaemonLogListController.php',
'PhabricatorDaemonLogListView' => 'applications/daemon/view/PhabricatorDaemonLogListView.php',
'PhabricatorDaemonLogQuery' => 'applications/daemon/query/PhabricatorDaemonLogQuery.php',
@@ -1364,6 +1371,7 @@
'PhabricatorDaemonManagementStopWorkflow' => 'applications/daemon/management/PhabricatorDaemonManagementStopWorkflow.php',
'PhabricatorDaemonManagementWorkflow' => 'applications/daemon/management/PhabricatorDaemonManagementWorkflow.php',
'PhabricatorDaemonReference' => 'infrastructure/daemon/control/PhabricatorDaemonReference.php',
+ 'PhabricatorDaemonTaskGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php',
'PhabricatorDataNotAttachedException' => 'infrastructure/storage/lisk/PhabricatorDataNotAttachedException.php',
'PhabricatorDebugController' => 'applications/system/PhabricatorDebugController.php',
'PhabricatorDefaultFileStorageEngineSelector' => 'applications/files/engineselector/PhabricatorDefaultFileStorageEngineSelector.php',
@@ -1472,6 +1480,7 @@
'PhabricatorFileStorageConfigurationException' => 'applications/files/exception/PhabricatorFileStorageConfigurationException.php',
'PhabricatorFileStorageEngine' => 'applications/files/engine/PhabricatorFileStorageEngine.php',
'PhabricatorFileStorageEngineSelector' => 'applications/files/engineselector/PhabricatorFileStorageEngineSelector.php',
+ 'PhabricatorFileTemporaryGarbageCollector' => 'applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php',
'PhabricatorFileTestCase' => 'applications/files/storage/__tests__/PhabricatorFileTestCase.php',
'PhabricatorFileTestDataGenerator' => 'applications/files/lipsum/PhabricatorFileTestDataGenerator.php',
'PhabricatorFileTransaction' => 'applications/files/storage/PhabricatorFileTransaction.php',
@@ -2699,7 +2708,9 @@
'ConduitAPI_user_removestatus_Method' => 'ConduitAPI_user_Method',
'ConduitAPI_user_whoami_Method' => 'ConduitAPI_user_Method',
'ConduitCallTestCase' => 'PhabricatorTestCase',
+ 'ConduitConnectionGarbageCollector' => 'PhabricatorGarbageCollector',
'ConduitException' => 'Exception',
+ 'ConduitLogGarbageCollector' => 'PhabricatorGarbageCollector',
'ConduitSSHWorkflow' => 'PhabricatorSSHWorkflow',
'ConpherenceActionMenuEventListener' => 'PhabricatorEventListener',
'ConpherenceConfigOptions' => 'PhabricatorApplicationConfigOptions',
@@ -2847,6 +2858,7 @@
'DifferentialNewDiffMail' => 'DifferentialReviewRequestMail',
'DifferentialPHIDTypeDiff' => 'PhabricatorPHIDType',
'DifferentialPHIDTypeRevision' => 'PhabricatorPHIDType',
+ 'DifferentialParseCacheGarbageCollector' => 'PhabricatorGarbageCollector',
'DifferentialParseRenderTestCase' => 'PhabricatorTestCase',
'DifferentialPathFieldSpecification' => 'DifferentialFieldSpecification',
'DifferentialPrimaryPaneView' => 'AphrontView',
@@ -3803,8 +3815,11 @@
'PhabricatorBuiltinPatchList' => 'PhabricatorSQLPatchList',
'PhabricatorBusyExample' => 'PhabricatorUIExample',
'PhabricatorCacheDAO' => 'PhabricatorLiskDAO',
+ 'PhabricatorCacheGeneralGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorCacheManagementPurgeWorkflow' => 'PhabricatorCacheManagementWorkflow',
'PhabricatorCacheManagementWorkflow' => 'PhabricatorManagementWorkflow',
+ 'PhabricatorCacheMarkupGarbageCollector' => 'PhabricatorGarbageCollector',
+ 'PhabricatorCacheTTLGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorCalendarBrowseController' => 'PhabricatorCalendarController',
'PhabricatorCalendarController' => 'PhabricatorController',
'PhabricatorCalendarDAO' => 'PhabricatorLiskDAO',
@@ -3944,6 +3959,7 @@
'PhabricatorDaemonLogEvent' => 'PhabricatorDaemonDAO',
'PhabricatorDaemonLogEventViewController' => 'PhabricatorDaemonController',
'PhabricatorDaemonLogEventsView' => 'AphrontView',
+ 'PhabricatorDaemonLogGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorDaemonLogListController' => 'PhabricatorDaemonController',
'PhabricatorDaemonLogListView' => 'AphrontView',
'PhabricatorDaemonLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
@@ -3957,6 +3973,7 @@
'PhabricatorDaemonManagementStatusWorkflow' => 'PhabricatorDaemonManagementWorkflow',
'PhabricatorDaemonManagementStopWorkflow' => 'PhabricatorDaemonManagementWorkflow',
'PhabricatorDaemonManagementWorkflow' => 'PhabricatorManagementWorkflow',
+ 'PhabricatorDaemonTaskGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorDataNotAttachedException' => 'Exception',
'PhabricatorDebugController' => 'PhabricatorController',
'PhabricatorDefaultFileStorageEngineSelector' => 'PhabricatorFileStorageEngineSelector',
@@ -4079,6 +4096,7 @@
'PhabricatorFileShortcutController' => 'PhabricatorFileController',
'PhabricatorFileStorageBlob' => 'PhabricatorFileDAO',
'PhabricatorFileStorageConfigurationException' => 'Exception',
+ 'PhabricatorFileTemporaryGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorFileTestCase' => 'PhabricatorTestCase',
'PhabricatorFileTestDataGenerator' => 'PhabricatorTestDataGenerator',
'PhabricatorFileTransaction' => 'PhabricatorApplicationTransaction',
Index: src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
@@ -0,0 +1,26 @@
+<?php
+
+final class PhabricatorCacheGeneralGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.general-cache';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $cache = new PhabricatorKeyValueDatabaseCache();
+ $conn_w = $cache->establishConnection('w');
+
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE cacheCreated < %d
+ ORDER BY cacheCreated ASC LIMIT 100',
+ $cache->getTableName(),
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
@@ -0,0 +1,25 @@
+<?php
+
+final class PhabricatorCacheMarkupGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.markup-cache';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new PhabricatorMarkupCache();
+ $conn_w = $table->establishConnection('w');
+
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE dateCreated < %d LIMIT 100',
+ $table->getTableName(),
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
@@ -0,0 +1,20 @@
+<?php
+
+final class PhabricatorCacheTTLGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $cache = new PhabricatorKeyValueDatabaseCache();
+ $conn_w = $cache->establishConnection('w');
+
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE cacheExpires < %d
+ ORDER BY cacheExpires ASC LIMIT 100',
+ $cache->getTableName(),
+ time());
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
@@ -0,0 +1,25 @@
+<?php
+
+final class ConduitConnectionGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.conduit-logs';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new PhabricatorConduitConnectionLog();
+ $conn_w = $table->establishConnection('w');
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE dateCreated < %d
+ ORDER BY dateCreated ASC LIMIT 100',
+ $table->getTableName(),
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
@@ -0,0 +1,25 @@
+<?php
+
+final class ConduitLogGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.conduit-logs';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new PhabricatorConduitMethodCallLog();
+ $conn_w = $table->establishConnection('w');
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE dateCreated < %d
+ ORDER BY dateCreated ASC LIMIT 100',
+ $table->getTableName(),
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
@@ -0,0 +1,24 @@
+<?php
+
+final class PhabricatorDaemonLogGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.daemon-logs');
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new PhabricatorDaemonLogEvent();
+ $conn_w = $table->establishConnection('w');
+
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE epoch < %d LIMIT 100',
+ $table->getTableName(),
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
@@ -0,0 +1,48 @@
+<?php
+
+final class PhabricatorDaemonTaskGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.task-archive';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new PhabricatorWorkerArchiveTask();
+ $data_table = new PhabricatorWorkerTaskData();
+ $conn_w = $table->establishConnection('w');
+
+ $rows = queryfx_all(
+ $conn_w,
+ 'SELECT id, dataID FROM %T WHERE dateCreated < %d LIMIT 100',
+ $table->getTableName(),
+ time() - $ttl);
+
+ if (!$rows) {
+ return false;
+ }
+
+ $data_ids = array_filter(ipull($rows, 'dataID'));
+ $task_ids = ipull($rows, 'id');
+
+ $table->openTransaction();
+ if ($data_ids) {
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE id IN (%Ld)',
+ $data_table->getTableName(),
+ $data_ids);
+ }
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE id IN (%Ld)',
+ $table->getTableName(),
+ $task_ids);
+ $table->saveTransaction();
+
+ return (count($task_ids) == 100);
+ }
+
+}
Index: src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
@@ -0,0 +1,25 @@
+<?php
+
+final class DifferentialParseCacheGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $key = 'gcdaemon.ttl.differential-parse-cache';
+ $ttl = PhabricatorEnv::getEnvConfig($key);
+ if ($ttl <= 0) {
+ return false;
+ }
+
+ $table = new DifferentialChangeset();
+ $conn_w = $table->establishConnection('w');
+
+ queryfx(
+ $conn_w,
+ 'DELETE FROM %T WHERE dateCreated < %d LIMIT 100',
+ DifferentialChangeset::TABLE_CACHE,
+ time() - $ttl);
+
+ return ($conn_w->getAffectedRows() == 100);
+ }
+
+}
Index: src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
===================================================================
--- /dev/null
+++ src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
@@ -0,0 +1,18 @@
+<?php
+
+final class PhabricatorFileTemporaryGarbageCollector
+ extends PhabricatorGarbageCollector {
+
+ public function collectGarbage() {
+ $files = id(new PhabricatorFile())->loadAllWhere(
+ 'ttl < %d LIMIT 100',
+ time());
+
+ foreach ($files as $file) {
+ $file->delete();
+ }
+
+ return (count($files) == 100);
+ }
+
+}
Index: src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollectorDaemon.php
===================================================================
--- src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollectorDaemon.php
+++ src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollectorDaemon.php
@@ -3,8 +3,6 @@
/**
* Collects old logs and caches to reduce the amount of data stored in the
* database.
- *
- * @group daemon
*/
final class PhabricatorGarbageCollectorDaemon extends PhabricatorDaemon {
@@ -14,40 +12,6 @@
->loadObjects();
do {
- $n_daemon = $this->collectDaemonLogs();
- $n_parse = $this->collectParseCaches();
- $n_markup = $this->collectMarkupCaches();
- $n_tasks = $this->collectArchivedTasks();
- $n_cache_ttl = $this->collectGeneralCacheTTL();
- $n_cache = $this->collectGeneralCaches();
- $n_files = $this->collectExpiredFiles();
- $n_clogs = $this->collectExpiredConduitLogs();
- $n_ccons = $this->collectExpiredConduitConnections();
-
- $collected = array(
- 'Daemon Log' => $n_daemon,
- 'Differential Parse Cache' => $n_parse,
- 'Markup Cache' => $n_markup,
- 'Archived Tasks' => $n_tasks,
- 'General Cache TTL' => $n_cache_ttl,
- 'General Cache Entries' => $n_cache,
- 'Temporary Files' => $n_files,
- 'Conduit Logs' => $n_clogs,
- 'Conduit Connections' => $n_ccons,
- );
- $collected = array_filter($collected);
-
- foreach ($collected as $thing => $count) {
- $count = number_format($count);
- $this->log("Garbage collected {$count} '{$thing}' objects.");
- }
-
- $total = array_sum($collected);
-
- // TODO: This logic is unnecessarily complex for now to facilitate a
- // gradual conversion to the new GC infrastructure.
-
- $had_more_garbage = false;
foreach ($collectors as $name => $collector) {
$more_garbage = false;
do {
@@ -58,210 +22,17 @@
}
$more_garbage = $collector->collectGarbage();
- if ($more_garbage) {
- $had_more_garbage = true;
- }
$this->stillWorking();
} while ($more_garbage);
}
- if ($had_more_garbage) {
- $total += 100;
- }
-
- if ($total < 100) {
- // We didn't max out any of the GCs so we're basically caught up. Ease
- // off the GC loop so we don't keep doing table scans just to delete
- // a handful of rows; wake up in a few hours.
- $this->sleep(4 * (60 * 60));
- } else {
- $this->stillWorking();
- }
+ // We made it to the end of the run cycle of every GC, so we're more or
+ // less caught up. Ease off the GC loop so we don't keep doing table
+ // scans just to delete a handful of rows; wake up in a few hours.
+ $this->log(pht('All caught up, waiting for more garbage.'));
+ $this->sleep(4 * (60 * 60));
} while (true);
}
- private function collectDaemonLogs() {
- $ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.daemon-logs');
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new PhabricatorDaemonLogEvent();
- $conn_w = $table->establishConnection('w');
-
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE epoch < %d LIMIT 100',
- $table->getTableName(),
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
- private function collectParseCaches() {
- $key = 'gcdaemon.ttl.differential-parse-cache';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new DifferentialChangeset();
- $conn_w = $table->establishConnection('w');
-
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE dateCreated < %d LIMIT 100',
- DifferentialChangeset::TABLE_CACHE,
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
- private function collectMarkupCaches() {
- $key = 'gcdaemon.ttl.markup-cache';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new PhabricatorMarkupCache();
- $conn_w = $table->establishConnection('w');
-
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE dateCreated < %d LIMIT 100',
- $table->getTableName(),
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
- private function collectArchivedTasks() {
- $key = 'gcdaemon.ttl.task-archive';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new PhabricatorWorkerArchiveTask();
- $data_table = new PhabricatorWorkerTaskData();
- $conn_w = $table->establishConnection('w');
-
- $rows = queryfx_all(
- $conn_w,
- 'SELECT id, dataID FROM %T WHERE dateCreated < %d LIMIT 100',
- $table->getTableName(),
- time() - $ttl);
-
- if (!$rows) {
- return 0;
- }
-
- $data_ids = array_filter(ipull($rows, 'dataID'));
- $task_ids = ipull($rows, 'id');
-
- $table->openTransaction();
- if ($data_ids) {
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE id IN (%Ld)',
- $data_table->getTableName(),
- $data_ids);
- }
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE id IN (%Ld)',
- $table->getTableName(),
- $task_ids);
- $table->saveTransaction();
-
- return count($task_ids);
- }
-
-
- private function collectGeneralCacheTTL() {
- $cache = new PhabricatorKeyValueDatabaseCache();
- $conn_w = $cache->establishConnection('w');
-
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE cacheExpires < %d
- ORDER BY cacheExpires ASC LIMIT 100',
- $cache->getTableName(),
- time());
-
- return $conn_w->getAffectedRows();
- }
-
-
- private function collectGeneralCaches() {
- $key = 'gcdaemon.ttl.general-cache';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $cache = new PhabricatorKeyValueDatabaseCache();
- $conn_w = $cache->establishConnection('w');
-
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE cacheCreated < %d
- ORDER BY cacheCreated ASC LIMIT 100',
- $cache->getTableName(),
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
- private function collectExpiredFiles() {
- $files = id(new PhabricatorFile())->loadAllWhere('ttl < %d LIMIT 100',
- time());
-
- foreach ($files as $file) {
- $file->delete();
- }
-
- return count($files);
- }
-
- private function collectExpiredConduitLogs() {
- $key = 'gcdaemon.ttl.conduit-logs';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new PhabricatorConduitMethodCallLog();
- $conn_w = $table->establishConnection('w');
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE dateCreated < %d
- ORDER BY dateCreated ASC LIMIT 100',
- $table->getTableName(),
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
- private function collectExpiredConduitConnections() {
- $key = 'gcdaemon.ttl.conduit-logs';
- $ttl = PhabricatorEnv::getEnvConfig($key);
- if ($ttl <= 0) {
- return 0;
- }
-
- $table = new PhabricatorConduitConnectionLog();
- $conn_w = $table->establishConnection('w');
- queryfx(
- $conn_w,
- 'DELETE FROM %T WHERE dateCreated < %d
- ORDER BY dateCreated ASC LIMIT 100',
- $table->getTableName(),
- time() - $ttl);
-
- return $conn_w->getAffectedRows();
- }
-
}

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 19, 1:54 AM (4 d, 30 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7710658
Default Alt Text
D7971.id.diff (24 KB)

Event Timeline