From 9fd0c1d5e7046f0cf6fcb4e4890196cd3214d16b Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 4 Oct 2016 04:24:25 -0700 Subject: [PATCH] Make server index validity checks in LoadBalancer actually work Change-Id: I8f0fd802ee3ce67903af5a83ec07dc0506ec84ba --- includes/libs/rdbms/loadbalancer/LoadBalancer.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 31c022c7f9..0c829685bf 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -663,6 +663,10 @@ class LoadBalancer implements ILoadBalancer { } elseif ( isset( $this->mConns['local'][$i][0] ) ) { $conn = $this->mConns['local'][$i][0]; } else { + if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { + throw new InvalidArgumentException( "No server with index '$i'." ); + } + // Open a new connection $server = $this->mServers[$i]; $server['serverIndex'] = $i; $conn = $this->reallyOpenConnection( $server, false ); @@ -743,6 +747,9 @@ class LoadBalancer implements ILoadBalancer { ": reusing free connection from $oldDomain for $domain" ); } } else { + if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { + throw new InvalidArgumentException( "No server with index '$i'." ); + } // Open a new connection $server = $this->mServers[$i]; $server['serverIndex'] = $i; @@ -795,17 +802,11 @@ class LoadBalancer implements ILoadBalancer { * @throws DBAccessError * @throws InvalidArgumentException */ - protected function reallyOpenConnection( $server, $dbNameOverride = false ) { + protected function reallyOpenConnection( array $server, $dbNameOverride = false ) { if ( $this->disabled ) { throw new DBAccessError(); } - if ( !is_array( $server ) ) { - throw new InvalidArgumentException( - 'You must update your load-balancing configuration. ' . - 'See DefaultSettings.php entry for $wgDBservers.' ); - } - if ( $dbNameOverride !== false ) { $server['dbname'] = $dbNameOverride; } -- 2.20.1