Aaron Schulz has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/366509 )
Change subject: Refactor LoadBalancer::setDomainPrefix() to use forEachOpen* method ...................................................................... Refactor LoadBalancer::setDomainPrefix() to use forEachOpen* method This makes the code more consistent with the other class methods that iterate over connection handles and less fragile. Change-Id: Ie2d8efb80a66a5c87b5b3edd64cb6bc4268fa911 --- M includes/libs/rdbms/loadbalancer/LoadBalancer.php 1 file changed, 10 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/09/366509/1 diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 0b70010..b281af0 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -1621,13 +1621,17 @@ } public function setDomainPrefix( $prefix ) { - if ( $this->mConns['foreignUsed'] ) { - // Do not switch connections to explicit foreign domains unless marked as free - $domains = []; - foreach ( $this->mConns['foreignUsed'] as $i => $connsByDomain ) { - $domains = array_merge( $domains, array_keys( $connsByDomain ) ); + // Find connections to explicit foreign domains still marked as in-use... + $domainsInUse = []; + $this->forEachOpenConnection( function ( IDatabase $conn ) use ( &$domainsInUse ) { + if ( $conn->getLBInfo( 'foreignPoolRefCount' ) > 0 ) { + $domainsInUse[] = $conn->getDomainID(); // reuseConnection() not called yet } - $domains = implode( ', ', $domains ); + } ); + + // Do not switch connections to explicit foreign domains unless marked as safe + if ( $domainsInUse ) { + $domains = implode( ', ', $domainsInUse ); throw new DBUnexpectedError( null, "Foreign domain connections are still in use ($domains)." ); } -- To view, visit https://gerrit.wikimedia.org/r/366509 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie2d8efb80a66a5c87b5b3edd64cb6bc4268fa911 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits