-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Complete modularization of the GC daemon
Summary: This modularizes the rest of the GC submethods. Turned out there was nothing tricky. Test Plan: Ran `bin/phd debug garbage` and got reasonable looking behavior and output. Reviewers: btrahan Reviewed By: btrahan CC: aran Differential Revision: https://secure.phabricator.com/D7971
- Loading branch information
epriestley
committed
Jan 15, 2014
1 parent
56d44f1
commit 9f35c7c
Showing
11 changed files
with
259 additions
and
234 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
src/applications/cache/garbagecollector/PhabricatorCacheGeneralGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
src/applications/cache/garbagecollector/PhabricatorCacheMarkupGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
20 changes: 20 additions & 0 deletions
20
src/applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
src/applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
src/applications/conduit/garbagecollector/ConduitLogGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
24 changes: 24 additions & 0 deletions
24
src/applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
48 changes: 48 additions & 0 deletions
48
src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
src/applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
18 changes: 18 additions & 0 deletions
18
src/applications/files/garbagecollector/PhabricatorFileTemporaryGarbageCollector.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
|
||
} |
Oops, something went wrong.