Merge "rdbms: add domain sanity checks to LoadBalancer connection methods"

This commit is contained in:
Krinkle 2018-10-13 00:08:28 +00:00 committed by Gerrit Code Review
commit e4389b7a23

View file

@ -28,6 +28,7 @@ use BagOStuff;
use EmptyBagOStuff;
use WANObjectCache;
use ArrayUtils;
use UnexpectedValueException;
use InvalidArgumentException;
use RuntimeException;
use Exception;
@ -952,6 +953,17 @@ class LoadBalancer implements ILoadBalancer {
}
}
// Final sanity check to make sure the right domain is selected
if (
$conn instanceof IDatabase &&
$this->localDomain->getDatabase() !== null &&
$conn->getDomainID() !== $this->localDomain->getId()
) {
throw new UnexpectedValueException(
"Got connection to '{$conn->getDomainID()}', " .
"but expected local domain ('{$this->localDomain}')." );
}
return $conn;
}
@ -1038,8 +1050,13 @@ class LoadBalancer implements ILoadBalancer {
}
}
// Increment reference count
if ( $conn instanceof IDatabase ) {
// Final sanity check to make sure the right domain is selected
if ( $domainInstance->getDatabase() !== null && $conn->getDomainID() !== $domain ) {
throw new UnexpectedValueException(
"Got connection to '{$conn->getDomainID()}', but expected '$domain'." );
}
// Increment reference count
$refCount = $conn->getLBInfo( 'foreignPoolRefCount' );
$conn->setLBInfo( 'foreignPoolRefCount', $refCount + 1 );
}