From d9022f63880ce039446fba8364f68e656b7bf4cb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 3 May 2012 13:01:35 +0200 Subject: Update to MediaWiki 1.19.0 --- includes/db/LoadBalancer.php | 85 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 18 deletions(-) (limited to 'includes/db/LoadBalancer.php') diff --git a/includes/db/LoadBalancer.php b/includes/db/LoadBalancer.php index c7210c4c..e96c6720 100644 --- a/includes/db/LoadBalancer.php +++ b/includes/db/LoadBalancer.php @@ -90,6 +90,8 @@ class LoadBalancer { /** * Get or set arbitrary data used by the parent object, usually an LBFactory + * @param $x + * @return \Mixed */ function parentInfo( $x = null ) { return wfSetVar( $this->mParentInfo, $x ); @@ -99,7 +101,7 @@ class LoadBalancer { * Given an array of non-normalised probabilities, this function will select * an element and return the appropriate key * - * @param $weights + * @param $weights array * * @return int */ @@ -117,7 +119,7 @@ class LoadBalancer { return false; } $max = mt_getrandmax(); - $rand = mt_rand(0, $max) / $max * $sum; + $rand = mt_rand( 0, $max ) / $max * $sum; $sum = 0; foreach ( $weights as $i => $w ) { @@ -130,7 +132,7 @@ class LoadBalancer { } /** - * @param $loads + * @param $loads array * @param $wiki bool * @return bool|int|string */ @@ -140,10 +142,10 @@ class LoadBalancer { foreach ( $lags as $i => $lag ) { if ( $i != 0 ) { if ( $lag === false ) { - wfDebug( "Server #$i is not replicating\n" ); + wfDebugLog( 'replication', "Server #$i is not replicating\n" ); unset( $loads[$i] ); } elseif ( isset( $this->mServers[$i]['max lag'] ) && $lag > $this->mServers[$i]['max lag'] ) { - wfDebug( "Server #$i is excessively lagged ($lag seconds)\n" ); + wfDebugLog( 'replication', "Server #$i is excessively lagged ($lag seconds)\n" ); unset( $loads[$i] ); } } @@ -241,6 +243,7 @@ class LoadBalancer { $i = $this->getRandomNonLagged( $currentLoads, $wiki ); if ( $i === false && count( $currentLoads ) != 0 ) { # All slaves lagged. Switch to read-only mode + wfDebugLog( 'replication', "All slaves lagged. Switch to read-only mode\n" ); $wgReadOnly = 'The database has been automatically locked ' . 'while the slave database servers catch up to the master'; $i = $this->pickRandom( $currentLoads ); @@ -333,6 +336,8 @@ class LoadBalancer { /** * Wait for a specified number of microseconds, and return the period waited + * @param $t int + * @return int */ function sleep( $t ) { wfProfileIn( __METHOD__ ); @@ -346,6 +351,7 @@ class LoadBalancer { * Set the master wait position * If a DB_SLAVE connection has been opened already, waits * Otherwise sets a variable telling it to wait if such a connection is opened + * @param $pos int */ public function waitFor( $pos ) { wfProfileIn( __METHOD__ ); @@ -363,6 +369,7 @@ class LoadBalancer { /** * Set the master wait position and wait for ALL slaves to catch up to it + * @param $pos int */ public function waitForAll( $pos ) { wfProfileIn( __METHOD__ ); @@ -377,7 +384,8 @@ class LoadBalancer { * Get any open connection to a given server index, local or foreign * Returns false if there is no connection open * - * @return DatabaseBase + * @param $i int + * @return DatabaseBase|false */ function getAnyOpenConnection( $i ) { foreach ( $this->mConns as $conns ) { @@ -390,6 +398,9 @@ class LoadBalancer { /** * Wait for a given slave to catch up to the master pos stored in $this + * @param $index + * @param $open bool + * @return bool */ function doWait( $index, $open = false ) { # Find a connection to wait on @@ -662,12 +673,14 @@ class LoadBalancer { * Returns a Database object whether or not the connection was successful. * @access private * + * @param $server + * @param $dbNameOverride bool * @return DatabaseBase */ function reallyOpenConnection( $server, $dbNameOverride = false ) { if( !is_array( $server ) ) { throw new MWException( 'You must update your load-balancing configuration. ' . - 'See DefaultSettings.php entry for $wgDBservers.' ); + 'See DefaultSettings.php entry for $wgDBservers.' ); } $host = $server['host']; @@ -702,6 +715,10 @@ class LoadBalancer { return $db; } + /** + * @param $conn + * @throws DBConnectionError + */ function reportConnectionError( &$conn ) { wfProfileIn( __METHOD__ ); @@ -719,6 +736,9 @@ class LoadBalancer { wfProfileOut( __METHOD__ ); } + /** + * @return int + */ function getWriterIndex() { return 0; } @@ -726,6 +746,7 @@ class LoadBalancer { /** * Returns true if the specified index is a valid server index * + * @param $i * @return bool */ function haveIndex( $i ) { @@ -735,6 +756,7 @@ class LoadBalancer { /** * Returns true if the specified index is valid and has non-zero load * + * @param $i * @return bool */ function isNonZeroLoad( $i ) { @@ -753,6 +775,8 @@ class LoadBalancer { /** * Get the host name or IP address of the server with the specified index * Prefer a readable name if available. + * @param $i + * @return string */ function getServerName( $i ) { if ( isset( $this->mServers[$i]['hostName'] ) ) { @@ -766,6 +790,8 @@ class LoadBalancer { /** * Return the server info structure for a given index, or false if the index is invalid. + * @param $i + * @return bool */ function getServerInfo( $i ) { if ( isset( $this->mServers[$i] ) ) { @@ -777,6 +803,8 @@ class LoadBalancer { /** * Sets the server info structure for the given index. Entry at index $i is created if it doesn't exist + * @param $i + * @param $serverInfo */ function setServerInfo( $i, $serverInfo ) { $this->mServers[$i] = $serverInfo; @@ -827,8 +855,10 @@ class LoadBalancer { * Deprecated function, typo in function name * * @deprecated in 1.18 + * @param $conn */ function closeConnecton( $conn ) { + wfDeprecated( __METHOD__, '1.18' ); $this->closeConnection( $conn ); } @@ -836,8 +866,7 @@ class LoadBalancer { * Close a connection * Using this function makes sure the LoadBalancer knows the connection is closed. * If you use $conn->close() directly, the load balancer won't update its state. - * @param $conn - * @return void + * @param $conn DatabaseBase */ function closeConnection( $conn ) { $done = false; @@ -883,21 +912,32 @@ class LoadBalancer { } foreach ( $conns2[$masterIndex] as $conn ) { if ( $conn->doneWrites() ) { - $conn->commit(); + $conn->commit( __METHOD__ ); } } } } + /** + * @param $value null + * @return Mixed + */ function waitTimeout( $value = null ) { return wfSetVar( $this->mWaitTimeout, $value ); } + /** + * @return bool + */ function getLaggedSlaveMode() { return $this->mLaggedSlaveMode; } - /* Disables/enables lag checks */ + /** + * Disables/enables lag checks + * @param $mode null + * @return bool + */ function allowLagged( $mode = null ) { if ( $mode === null) { return $this->mAllowLagged; @@ -905,6 +945,9 @@ class LoadBalancer { $this->mAllowLagged = $mode; } + /** + * @return bool + */ function pingAll() { $success = true; foreach ( $this->mConns as $conns2 ) { @@ -921,6 +964,8 @@ class LoadBalancer { /** * Call a function with each open connection object + * @param $callback + * @param array $params */ function forEachOpenConnection( $callback, $params = array() ) { foreach ( $this->mConns as $conns2 ) { @@ -936,7 +981,7 @@ class LoadBalancer { /** * Get the hostname and lag time of the most-lagged slave. * This is useful for maintenance scripts that need to throttle their updates. - * May attempt to open connections to slaves on the default DB. If there is + * May attempt to open connections to slaves on the default DB. If there is * no lag, the maximum lag will be reported as -1. * * @param $wiki string Wiki ID, or false for the default database @@ -988,22 +1033,26 @@ class LoadBalancer { $this->mLagTimes = array( 0 => 0 ); } else { # Send the request to the load monitor - $this->mLagTimes = $this->getLoadMonitor()->getLagTimes( + $this->mLagTimes = $this->getLoadMonitor()->getLagTimes( array_keys( $this->mServers ), $wiki ); } return $this->mLagTimes; } /** - * Get the lag in seconds for a given connection, or zero if this load - * balancer does not have replication enabled. + * Get the lag in seconds for a given connection, or zero if this load + * balancer does not have replication enabled. * - * This should be used in preference to Database::getLag() in cases where - * replication may not be in use, since there is no way to determine if - * replication is in use at the connection level without running + * This should be used in preference to Database::getLag() in cases where + * replication may not be in use, since there is no way to determine if + * replication is in use at the connection level without running * potentially restricted queries such as SHOW SLAVE STATUS. Using this * function instead of Database::getLag() avoids a fatal error in this * case on many installations. + * + * @param $conn DatabaseBase + * + * @return int */ function safeGetLag( $conn ) { if ( $this->getServerCount() == 1 ) { -- cgit v1.2.3-54-g00ecf