Destroy changeset parse cache when destroying a revision
Summary: When we delete a DifferentialChangeset, also delete the cache if it exists.
Test Plan:
Destroyed a revision, verified cache was destroyed. See marked line below.
$ ./scripts/differential/destroy_revision.php D1 --trace
>>> [0] <connect>
<<< [0] <connect> 1,324 us
>>> [1] <query> SELECT * FROM `differential_revision` WHERE `id` = 1
<<< [1] <query> 517 us
Really destroy 'D1: asdb' forever? [y/N] y
>>> [2] <connect>
<<< [2] <connect> 633 us
>>> [3] <query> START TRANSACTION
<<< [3] <query> 183 us
>>> [4] <query> SELECT * FROM `differential_diff` WHERE revisionID = 1
<<< [4] <query> 560 us
>>> [5] <query> SAVEPOINT Aphront_Savepoint_1
<<< [5] <query> 197 us
>>> [6] <query> SELECT * FROM `differential_changeset` WHERE diffID = 3
<<< [6] <query> 672 us
>>> [7] <query> SAVEPOINT Aphront_Savepoint_2
<<< [7] <query> 188 us
>>> [8] <query> SELECT * FROM `differential_hunk` WHERE changesetID = 6
<<< [8] <query> 946 us
>>> [9] <query> DELETE FROM `differential_hunk` WHERE `id` = 6
<<< [9] <query> 335 us
**** >>> [10] <query> DELETE FROM `differential_changeset_parse_cache` WHERE id = 6
<<< [10] <query> 1,464 us
>>> [11] <query> DELETE FROM `differential_changeset` WHERE `id` = 6
<<< [11] <query> 313 us
>>> [12] <query> SAVEPOINT Aphront_Savepoint_2
<<< [12] <query> 151 us
>>> [13] <query> SELECT * FROM `differential_hunk` WHERE changesetID = 7
<<< [13] <query> 226 us
>>> [14] <query> DELETE FROM `differential_hunk` WHERE `id` = 7
<<< [14] <query> 164 us
>>> [15] <query> DELETE FROM `differential_changeset_parse_cache` WHERE id = 7
<<< [15] <query> 318 us
>>> [16] <query> DELETE FROM `differential_changeset` WHERE `id` = 7
<<< [16] <query> 189 us
>>> [17] <query> SELECT * FROM `differential_diffproperty` WHERE diffID = 3
<<< [17] <query> 500 us
>>> [18] <query> DELETE FROM `differential_diffproperty` WHERE `id` = 1
<<< [18] <query> 179 us
>>> [19] <query> DELETE FROM `differential_diff` WHERE `id` = 3
<<< [19] <query> 211 us
>>> [20] <query> DELETE FROM `differential_relationship` WHERE revisionID = 1
<<< [20] <query> 391 us
>>> [21] <query> DELETE FROM `differential_commit` WHERE revisionID = 1
<<< [21] <query> 397 us
>>> [22] <query> SELECT * FROM `differential_comment` WHERE revisionID = 1
<<< [22] <query> 448 us
>>> [23] <query> DELETE FROM `differential_comment` WHERE `id` = 1
<<< [23] <query> 212 us
>>> [24] <query> DELETE FROM `differential_comment` WHERE `id` = 2
<<< [24] <query> 160 us
>>> [25] <query> SELECT * FROM `differential_inlinecomment` WHERE revisionID = 1
<<< [25] <query> 549 us
>>> [26] <query> SELECT * FROM `differential_auxiliaryfield` WHERE revisionPHID = 'PHID-DREV-orsh7alzcj764ubv2f34'
<<< [26] <query> 531 us
>>> [27] <query> SELECT * FROM `differential_affectedpath` WHERE revisionID = 1
<<< [27] <query> 5,676 us
>>> [28] <query> DELETE FROM `differential_revision` WHERE `id` = 1
<<< [28] <query> 442 us
>>> [29] <query> COMMIT
<<< [29] <query> 324 us
OK, destroyed revision.
Reviewers: csilvers, btrahan
Reviewed By: csilvers
CC: aran
Differential Revision: https://secure.phabricator.com/D2835
This commit is contained in:
@@ -105,6 +105,13 @@ final class DifferentialChangeset extends DifferentialDAO {
|
||||
$hunk->delete();
|
||||
}
|
||||
$this->_hunks = array();
|
||||
|
||||
queryfx(
|
||||
$this->establishConnection('w'),
|
||||
'DELETE FROM %T WHERE id = %d',
|
||||
self::TABLE_CACHE,
|
||||
$this->getID());
|
||||
|
||||
$ret = parent::delete();
|
||||
$this->saveTransaction();
|
||||
return $ret;
|
||||
|
||||
Reference in New Issue
Block a user