Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15626427
D14218.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
24 KB
Referenced Files
None
Subscribers
None
D14218.diff
View Options
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
@@ -1829,6 +1829,7 @@
'PhabricatorConfigAllController' => 'applications/config/controller/PhabricatorConfigAllController.php',
'PhabricatorConfigApplication' => 'applications/config/application/PhabricatorConfigApplication.php',
'PhabricatorConfigCacheController' => 'applications/config/controller/PhabricatorConfigCacheController.php',
+ 'PhabricatorConfigCollectorsModule' => 'applications/config/module/PhabricatorConfigCollectorsModule.php',
'PhabricatorConfigColumnSchema' => 'applications/config/schema/PhabricatorConfigColumnSchema.php',
'PhabricatorConfigConfigPHIDType' => 'applications/config/phid/PhabricatorConfigConfigPHIDType.php',
'PhabricatorConfigController' => 'applications/config/controller/PhabricatorConfigController.php',
@@ -5761,6 +5762,7 @@
'PhabricatorConfigAllController' => 'PhabricatorConfigController',
'PhabricatorConfigApplication' => 'PhabricatorApplication',
'PhabricatorConfigCacheController' => 'PhabricatorConfigController',
+ 'PhabricatorConfigCollectorsModule' => 'PhabricatorConfigModule',
'PhabricatorConfigColumnSchema' => 'PhabricatorConfigStorageSchema',
'PhabricatorConfigConfigPHIDType' => 'PhabricatorPHIDType',
'PhabricatorConfigController' => 'PhabricatorController',
diff --git a/src/applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php b/src/applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php
--- a/src/applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php
+++ b/src/applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorAuthSessionGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'auth.sessions';
+
+ public function getCollectorName() {
+ return pht('Auth Sessions');
+ }
+
+ public function hasAutomaticPolicy() {
+ return true;
+ }
+
public function collectGarbage() {
$session_table = new PhabricatorAuthSession();
$conn_w = $session_table->establishConnection('w');
diff --git a/src/applications/auth/garbagecollector/PhabricatorAuthTemporaryTokenGarbageCollector.php b/src/applications/auth/garbagecollector/PhabricatorAuthTemporaryTokenGarbageCollector.php
--- a/src/applications/auth/garbagecollector/PhabricatorAuthTemporaryTokenGarbageCollector.php
+++ b/src/applications/auth/garbagecollector/PhabricatorAuthTemporaryTokenGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorAuthTemporaryTokenGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'auth.tokens';
+
+ public function getCollectorName() {
+ return pht('Auth Tokens');
+ }
+
+ public function hasAutomaticPolicy() {
+ return true;
+ }
+
public function collectGarbage() {
$session_table = new PhabricatorAuthTemporaryToken();
$conn_w = $session_table->establishConnection('w');
diff --git a/src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php b/src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
--- a/src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
+++ b/src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorCacheGeneralGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'cache.general';
+
+ public function getCollectorName() {
+ return pht('General Cache');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('30 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.general-cache';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php b/src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
--- a/src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
+++ b/src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorCacheMarkupGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'cache.markup';
+
+ public function getCollectorName() {
+ return pht('Markup Cache');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('30 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.markup-cache';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php b/src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
--- a/src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
+++ b/src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorCacheTTLGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'cache.general.ttl';
+
+ public function getCollectorName() {
+ return pht('General Cache (TTL)');
+ }
+
+ public function hasAutomaticPolicy() {
+ return true;
+ }
+
public function collectGarbage() {
$cache = new PhabricatorKeyValueDatabaseCache();
$conn_w = $cache->establishConnection('w');
diff --git a/src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php b/src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
--- a/src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
+++ b/src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
@@ -3,6 +3,16 @@
final class ConduitConnectionGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'conduit.connections';
+
+ public function getCollectorName() {
+ return pht('Conduit Connections');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('180 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.conduit-logs';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php b/src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
--- a/src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
+++ b/src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
@@ -3,6 +3,16 @@
final class ConduitLogGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'conduit.logs';
+
+ public function getCollectorName() {
+ return pht('Conduit Logs');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('180 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.conduit-logs';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/conduit/garbagecollector/ConduitTokenGarbageCollector.php b/src/applications/conduit/garbagecollector/ConduitTokenGarbageCollector.php
--- a/src/applications/conduit/garbagecollector/ConduitTokenGarbageCollector.php
+++ b/src/applications/conduit/garbagecollector/ConduitTokenGarbageCollector.php
@@ -3,6 +3,16 @@
final class ConduitTokenGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'conduit.tokens';
+
+ public function getCollectorName() {
+ return pht('Conduit Tokens');
+ }
+
+ public function hasAutomaticPolicy() {
+ return true;
+ }
+
public function collectGarbage() {
$table = new PhabricatorConduitToken();
$conn_w = $table->establishConnection('w');
diff --git a/src/applications/config/module/PhabricatorConfigCollectorsModule.php b/src/applications/config/module/PhabricatorConfigCollectorsModule.php
new file mode 100644
--- /dev/null
+++ b/src/applications/config/module/PhabricatorConfigCollectorsModule.php
@@ -0,0 +1,61 @@
+<?php
+
+final class PhabricatorConfigCollectorsModule extends PhabricatorConfigModule {
+
+ public function getModuleKey() {
+ return 'collectors';
+ }
+
+ public function getModuleName() {
+ return pht('Garbage Collectors');
+ }
+
+ public function renderModuleStatus(AphrontRequest $request) {
+ $viewer = $request->getViewer();
+
+ $collectors = PhabricatorGarbageCollector::getAllCollectors();
+ $collectors = msort($collectors, 'getCollectorConstant');
+
+ $rows = array();
+ foreach ($collectors as $key => $collector) {
+ if ($collector->hasAutomaticPolicy()) {
+ $policy_view = phutil_tag('em', array(), pht('Automatic'));
+ } else {
+ $policy = $collector->getDefaultRetentionPolicy();
+ if ($policy === null) {
+ $policy_view = pht('Indefinite');
+ } else {
+ $days = ceil($policy / phutil_units('1 day in seconds'));
+ $policy_view = pht(
+ '%s Day(s)',
+ new PhutilNumber($days));
+ }
+ }
+
+ $rows[] = array(
+ $collector->getCollectorConstant(),
+ $collector->getCollectorName(),
+ $policy_view,
+ );
+ }
+
+ $table = id(new AphrontTableView($rows))
+ ->setHeaders(
+ array(
+ pht('Constant'),
+ pht('Name'),
+ pht('Retention Policy'),
+ ))
+ ->setColumnClasses(
+ array(
+ null,
+ 'pri wide',
+ null,
+ ));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Garbage Collectors'))
+ ->setTable($table);
+ }
+
+}
diff --git a/src/applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php b/src/applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php
--- a/src/applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php
+++ b/src/applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorDaemonLogEventGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'daemon.processes';
+
+ public function getCollectorName() {
+ return pht('Daemon Processes');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('7 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.daemon-logs');
if ($ttl <= 0) {
diff --git a/src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php b/src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
--- a/src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
+++ b/src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorDaemonLogGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'daemon.logs';
+
+ public function getCollectorName() {
+ return pht('Daemon Logs');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('7 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.daemon-logs');
if ($ttl <= 0) {
diff --git a/src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php b/src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
--- a/src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
+++ b/src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorDaemonTaskGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'worker.tasks';
+
+ public function getCollectorName() {
+ return pht('Archived Tasks');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('14 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.task-archive';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php b/src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
--- a/src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
+++ b/src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
@@ -3,6 +3,16 @@
final class DifferentialParseCacheGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'differential.parse';
+
+ public function getCollectorName() {
+ return pht('Differential Parse Cache');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('14 days in seconds');
+ }
+
public function collectGarbage() {
$key = 'gcdaemon.ttl.differential-parse-cache';
$ttl = PhabricatorEnv::getEnvConfig($key);
diff --git a/src/applications/drydock/garbagecollector/DrydockLogGarbageCollector.php b/src/applications/drydock/garbagecollector/DrydockLogGarbageCollector.php
--- a/src/applications/drydock/garbagecollector/DrydockLogGarbageCollector.php
+++ b/src/applications/drydock/garbagecollector/DrydockLogGarbageCollector.php
@@ -3,6 +3,16 @@
final class DrydockLogGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'drydock.logs';
+
+ public function getCollectorName() {
+ return pht('Drydock Logs');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('30 days in seconds');
+ }
+
public function collectGarbage() {
$log_table = new DrydockLog();
$conn_w = $log_table->establishConnection('w');
diff --git a/src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php b/src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
--- a/src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
+++ b/src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorFileTemporaryGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'files.ttl';
+
+ public function getCollectorName() {
+ return pht('Files (TTL)');
+ }
+
+ public function hasAutomaticPolicy() {
+ return true;
+ }
+
public function collectGarbage() {
$files = id(new PhabricatorFile())->loadAllWhere(
'ttl < %d LIMIT 100',
diff --git a/src/applications/herald/garbagecollector/HeraldTranscriptGarbageCollector.php b/src/applications/herald/garbagecollector/HeraldTranscriptGarbageCollector.php
--- a/src/applications/herald/garbagecollector/HeraldTranscriptGarbageCollector.php
+++ b/src/applications/herald/garbagecollector/HeraldTranscriptGarbageCollector.php
@@ -3,6 +3,16 @@
final class HeraldTranscriptGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'herald.transcripts';
+
+ public function getCollectorName() {
+ return pht('Herald Transcripts');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('30 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.herald-transcripts');
if ($ttl <= 0) {
diff --git a/src/applications/metamta/garbagecollector/MetaMTAMailReceivedGarbageCollector.php b/src/applications/metamta/garbagecollector/MetaMTAMailReceivedGarbageCollector.php
--- a/src/applications/metamta/garbagecollector/MetaMTAMailReceivedGarbageCollector.php
+++ b/src/applications/metamta/garbagecollector/MetaMTAMailReceivedGarbageCollector.php
@@ -3,6 +3,16 @@
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');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('90 days in seconds');
diff --git a/src/applications/metamta/garbagecollector/MetaMTAMailSentGarbageCollector.php b/src/applications/metamta/garbagecollector/MetaMTAMailSentGarbageCollector.php
--- a/src/applications/metamta/garbagecollector/MetaMTAMailSentGarbageCollector.php
+++ b/src/applications/metamta/garbagecollector/MetaMTAMailSentGarbageCollector.php
@@ -3,6 +3,16 @@
final class MetaMTAMailSentGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'metamta.sent';
+
+ public function getCollectorName() {
+ return pht('Mail (Sent)');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('90 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('90 days in seconds');
diff --git a/src/applications/multimeter/garbagecollector/MultimeterEventGarbageCollector.php b/src/applications/multimeter/garbagecollector/MultimeterEventGarbageCollector.php
--- a/src/applications/multimeter/garbagecollector/MultimeterEventGarbageCollector.php
+++ b/src/applications/multimeter/garbagecollector/MultimeterEventGarbageCollector.php
@@ -3,6 +3,16 @@
final class MultimeterEventGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'multimeter.events';
+
+ public function getCollectorName() {
+ return pht('Multimeter Events');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('90 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('90 days in seconds');
diff --git a/src/applications/notification/garbagecollector/FeedStoryNotificationGarbageCollector.php b/src/applications/notification/garbagecollector/FeedStoryNotificationGarbageCollector.php
--- a/src/applications/notification/garbagecollector/FeedStoryNotificationGarbageCollector.php
+++ b/src/applications/notification/garbagecollector/FeedStoryNotificationGarbageCollector.php
@@ -3,6 +3,16 @@
final class FeedStoryNotificationGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'feed.notifications';
+
+ public function getCollectorName() {
+ return pht('Notifications');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('90 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = 90 * 24 * 60 * 60;
diff --git a/src/applications/people/garbagecollector/PeopleUserLogGarbageCollector.php b/src/applications/people/garbagecollector/PeopleUserLogGarbageCollector.php
--- a/src/applications/people/garbagecollector/PeopleUserLogGarbageCollector.php
+++ b/src/applications/people/garbagecollector/PeopleUserLogGarbageCollector.php
@@ -3,6 +3,16 @@
final class PeopleUserLogGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'user.logs';
+
+ public function getCollectorName() {
+ return pht('User Activity Logs');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('180 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('180 days in seconds');
diff --git a/src/applications/system/garbagecollector/PhabricatorSystemActionGarbageCollector.php b/src/applications/system/garbagecollector/PhabricatorSystemActionGarbageCollector.php
--- a/src/applications/system/garbagecollector/PhabricatorSystemActionGarbageCollector.php
+++ b/src/applications/system/garbagecollector/PhabricatorSystemActionGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorSystemActionGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'system.actions';
+
+ public function getCollectorName() {
+ return pht('Rate Limiting Actions');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('3 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('3 days in seconds');
diff --git a/src/applications/system/garbagecollector/PhabricatorSystemDestructionGarbageCollector.php b/src/applications/system/garbagecollector/PhabricatorSystemDestructionGarbageCollector.php
--- a/src/applications/system/garbagecollector/PhabricatorSystemDestructionGarbageCollector.php
+++ b/src/applications/system/garbagecollector/PhabricatorSystemDestructionGarbageCollector.php
@@ -3,6 +3,16 @@
final class PhabricatorSystemDestructionGarbageCollector
extends PhabricatorGarbageCollector {
+ const COLLECTORCONST = 'system.destruction.logs';
+
+ public function getCollectorName() {
+ return pht('Destruction Logs');
+ }
+
+ public function getDefaultRetentionPolicy() {
+ return phutil_units('90 days in seconds');
+ }
+
public function collectGarbage() {
$ttl = phutil_units('90 days in seconds');
diff --git a/src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollector.php b/src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollector.php
--- a/src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollector.php
+++ b/src/infrastructure/daemon/garbagecollector/PhabricatorGarbageCollector.php
@@ -1,12 +1,85 @@
<?php
+/**
+ * @task info Getting Collector Information
+ * @task collect Collecting Garbage
+ */
abstract class PhabricatorGarbageCollector extends Phobject {
+
+/* -( Getting Collector Information )-------------------------------------- */
+
+
+ /**
+ * Get a human readable name for what this collector cleans up, like
+ * "User Activity Logs".
+ *
+ * @return string Human-readable collector name.
+ * @task info
+ */
+ abstract public function getCollectorName();
+
+
+ /**
+ * Specify that the collector has an automatic retention policy and
+ * is not configurable.
+ *
+ * @return bool True if the collector has an automatic retention policy.
+ * @task info
+ */
+ public function hasAutomaticPolicy() {
+ return false;
+ }
+
+
+ /**
+ * Get the default retention policy for this collector.
+ *
+ * Return the age (in seconds) when resources start getting collected, or
+ * `null` to retain resources indefinitely.
+ *
+ * @return int|null Lifetime, or `null` for indefinite retention.
+ * @task info
+ */
+ public function getDefaultRetentionPolicy() {
+ throw new PhutilMethodNotImplementedException();
+ }
+
+
+ /**
+ * Get a unique string constant identifying this collector.
+ *
+ * @return string Collector constant.
+ * @task info
+ */
+ final public function getCollectorConstant() {
+ return $this->getPhobjectClassConstant('COLLECTORCONST', 64);
+ }
+
+
+/* -( Collecting Garbage )------------------------------------------------- */
+
+
/**
* Collect garbage from whatever source this GC handles.
*
* @return bool True if there is more garbage to collect.
+ * @task collect
*/
abstract public function collectGarbage();
+
+ /**
+ * Load all of the available garbage collectors.
+ *
+ * @return list<PhabricatorGarbageCollector> Garbage collectors.
+ * @task collect
+ */
+ final public static function getAllCollectors() {
+ return id(new PhutilClassMapQuery())
+ ->setAncestorClass(__CLASS__)
+ ->setUniqueMethod('getCollectorConstant')
+ ->execute();
+ }
+
}
diff --git a/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php b/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
--- a/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
+++ b/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
@@ -348,7 +348,9 @@
$next = $this->nextCollection;
if ($next && (PhabricatorTime::getNow() >= $next)) {
$this->nextCollection = null;
- $this->garbageCollectors = $this->loadGarbageCollectors();
+
+ $all_collectors = PhabricatorGarbageCollector::getAllCollectors();
+ $this->garbageCollectors = $all_collectors;
}
// If we're in a collection cycle, continue collection.
@@ -377,18 +379,4 @@
return false;
}
-
- /**
- * Load all of the available garbage collectors.
- *
- * @return list<PhabricatorGarbageCollector> Garbage collectors.
- * @task garbage
- */
- private function loadGarbageCollectors() {
- return id(new PhutilClassMapQuery())
- ->setAncestorClass('PhabricatorGarbageCollector')
- ->execute();
- }
-
-
}
diff --git a/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php b/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
--- a/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
+++ b/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
@@ -1388,6 +1388,11 @@
'Mail sent in the last %s days.',
),
+ '%s Day(s)' => array(
+ '%s Day',
+ '%s Days',
+ ),
+
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, May 19, 5:04 PM (18 h, 58 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8005604
Default Alt Text
D14218.diff (24 KB)
Attached To
Mode
D14218: Begin standardizing garbage collectors
Attached
Detach File
Event Timeline
Log In to Comment