@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Garbage collect daemon logs

Summary:
We already have GC for daemon log events, but not for daemon logs themselves.

Collect old daemon logs which aren't still running.

Test Plan: Ran `phd debug garbage`, observed old logs get cleaned up. Started some daemons, re-ran garbage, made sure they stuck around.

Reviewers: joshuaspence

Reviewed By: joshuaspence

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D9610

+32 -3
+2
resources/sql/autopatches/20140617.daemonlog.sql
··· 1 + ALTER TABLE {$NAMESPACE}_daemon.daemon_log 2 + ADD KEY (dateCreated);
+2
src/__phutil_library_map__.php
··· 1454 1454 'PhabricatorDaemonEventListener' => 'applications/daemon/event/PhabricatorDaemonEventListener.php', 1455 1455 'PhabricatorDaemonLog' => 'applications/daemon/storage/PhabricatorDaemonLog.php', 1456 1456 'PhabricatorDaemonLogEvent' => 'applications/daemon/storage/PhabricatorDaemonLogEvent.php', 1457 + 'PhabricatorDaemonLogEventGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php', 1457 1458 'PhabricatorDaemonLogEventViewController' => 'applications/daemon/controller/PhabricatorDaemonLogEventViewController.php', 1458 1459 'PhabricatorDaemonLogEventsView' => 'applications/daemon/view/PhabricatorDaemonLogEventsView.php', 1459 1460 'PhabricatorDaemonLogGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php', ··· 4265 4266 1 => 'PhabricatorPolicyInterface', 4266 4267 ), 4267 4268 'PhabricatorDaemonLogEvent' => 'PhabricatorDaemonDAO', 4269 + 'PhabricatorDaemonLogEventGarbageCollector' => 'PhabricatorGarbageCollector', 4268 4270 'PhabricatorDaemonLogEventViewController' => 'PhabricatorDaemonController', 4269 4271 'PhabricatorDaemonLogEventsView' => 'AphrontView', 4270 4272 'PhabricatorDaemonLogGarbageCollector' => 'PhabricatorGarbageCollector',
+24
src/applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php
··· 1 + <?php 2 + 3 + final class PhabricatorDaemonLogEventGarbageCollector 4 + extends PhabricatorGarbageCollector { 5 + 6 + public function collectGarbage() { 7 + $ttl = PhabricatorEnv::getEnvConfig('gcdaemon.ttl.daemon-logs'); 8 + if ($ttl <= 0) { 9 + return false; 10 + } 11 + 12 + $table = new PhabricatorDaemonLogEvent(); 13 + $conn_w = $table->establishConnection('w'); 14 + 15 + queryfx( 16 + $conn_w, 17 + 'DELETE FROM %T WHERE epoch < %d LIMIT 100', 18 + $table->getTableName(), 19 + time() - $ttl); 20 + 21 + return ($conn_w->getAffectedRows() == 100); 22 + } 23 + 24 + }
+4 -3
src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
··· 9 9 return false; 10 10 } 11 11 12 - $table = new PhabricatorDaemonLogEvent(); 12 + $table = new PhabricatorDaemonLog(); 13 13 $conn_w = $table->establishConnection('w'); 14 14 15 15 queryfx( 16 16 $conn_w, 17 - 'DELETE FROM %T WHERE epoch < %d LIMIT 100', 17 + 'DELETE FROM %T WHERE dateCreated < %d AND status != %s LIMIT 100', 18 18 $table->getTableName(), 19 - time() - $ttl); 19 + time() - $ttl, 20 + PhabricatorDaemonLog::STATUS_RUNNING); 20 21 21 22 return ($conn_w->getAffectedRows() == 100); 22 23 }