1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-23 07:12:41 +01:00

Store forced connections in the Lisk connection cache

Summary:
In unit tests which use fixtures, we open transactions on every connection we establish. However, since we don't track connections that are established with "$force_new" (currently, only GlobalLock connections) we never close these transactions normally.

Instead of not tracking these connections, track them using unique keys so we'll never get a cache hit on them.

Test Plan: Built unit tests on top of this, had them stop dying from unclosed transactions.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T1162

Differential Revision: https://secure.phabricator.com/D2938
This commit is contained in:
epriestley 2012-07-09 10:39:21 -07:00
parent 7cf6313be9
commit d86c4e0366

View file

@ -302,9 +302,18 @@ abstract class LiskDAO {
*/
protected function setEstablishedConnection(
$mode,
AphrontDatabaseConnection $connection) {
AphrontDatabaseConnection $connection,
$force_unique = false) {
$key = $this->getConnectionNamespace().':'.$mode;
if ($force_unique) {
$key .= ':unique';
while (isset(self::$connections[$key])) {
$key .= '!';
}
}
self::$connections[$key] = $connection;
return $this;
}
@ -1009,9 +1018,10 @@ abstract class LiskDAO {
if (self::shouldIsolateAllLiskEffectsToTransactions()) {
$connection->openTransaction();
}
if (!$force_new) {
$this->setEstablishedConnection($mode, $connection);
}
$this->setEstablishedConnection(
$mode,
$connection,
$force_unique = $force_new);
}
return $connection;